【问题标题】:showing the name of the hard disk devices using grep使用 grep 显示硬盘设备的名称
【发布时间】:2016-01-29 02:06:22
【问题描述】:

为什么要执行这个命令:

[jalal@galapagos-20] (42)$ dmesg | egrep '(s|h)d[a-z]'

显示以下内容?可以一步一步来吗?

ACPI: SSDT 00000000d8ffbbd8 03528 (v01 SaSsdt  SaSsdt  00003000 INTL 20091112)
NMI watchdog enabled, takes one hw-pmu counter.
sd 0:0:0:0: [sda] 500118192 512-byte logical blocks: (256 GB/238 GiB)
sd 0:0:0:0: [sda] 4096-byte physical blocks
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
 sda: sda1 sda2 sda3 sda4 sda5 sda6 sda7
sd 0:0:0:0: [sda] Attached SCSI disk
EXT4-fs (sda3): mounted filesystem with ordered data mode. Opts: 
dracut: Mounted root filesystem /dev/sda3
snd_hda_intel 0000:00:03.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
snd_hda_intel 0000:00:03.0: irq 33 for MSI/MSI-X
snd_hda_intel 0000:00:03.0: setting latency timer to 64
snd_hda_intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
snd_hda_intel 0000:00:1b.0: irq 34 for MSI/MSI-X
snd_hda_intel 0000:00:1b.0: setting latency timer to 64
sound hdaudioC1D2: autoconfig for ALC3220: line_outs=1 (0x1b/0x0/0x0/0x0/0x0) type:line
sound hdaudioC1D2:    speaker_outs=1 (0x14/0x0/0x0/0x0/0x0)
sound hdaudioC1D2:    hp_outs=1 (0x15/0x0/0x0/0x0/0x0)
sound hdaudioC1D2:    mono: mono_out=0x0
sound hdaudioC1D2:    inputs:
sound hdaudioC1D2:      Front Mic=0x1a
sound hdaudioC1D2:      Rear Mic=0x18
EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: 
EXT4-fs (sda7): mounted filesystem with ordered data mode. Opts: 
EXT4-fs (sda4): mounted filesystem with ordered data mode. Opts: 
EXT4-fs (sda6): mounted filesystem with ordered data mode. Opts: 
EXT4-fs (sda5): mounted filesystem with ordered data mode. Opts: 
Adding 67108860k swap on /dev/sda2.  Priority:-1 extents:1 across:67108860k SS
snd_hda_intel 0000:00:1b.0: IRQ timing workaround is activated for card #1. Suggest a bigger bdl_pos_adj.

【问题讨论】:

  • 这里真正的问题是什么?你知道 dmesg 是做什么的吗?你了解 Unix 中的管道吗?你知道 egrep 是做什么的吗?你知道什么是正则表达式吗?您是否希望该命令输出其他任何内容?
  • 这个组合我猜主要是理解正则表达式

标签: linux terminal grep


【解决方案1】:

dmesg 命令将内核日志缓冲区转储到标准输出。此输出由一堆日志消息组成,每条消息都位于单独的行中。

该输出通过管道传送到带有选项(s|h)d[a-z] 的命令egrepegrep 一次检查其标准输入(dmesg 的输出)一行,以匹配正则表达式 (s|h)d[a-z]。此正则表达式将匹配一系列字符,其中:

  • 第一个字符是 s 或 h
  • 第二个字符是d
  • 第三个字符在 a 和 z(小写字母 a 到 z)之间的 ASCII 范围内(包括)。

egrep 将与提供的正则表达式匹配的任何行打印到标准输出。

【讨论】:

    【解决方案2】:

    egrep 命令使用正则表达式(s|h)d[a-z] 过滤包含序列hdahdzsdasdz 在dmesg 输出上的行 - Linux 中磁盘设备的传统名称。

    这个正则表达式可以换成[sh]d[a-z],效果一样,但你会发现更容易理解。

    如果您正在查找磁盘,则会出现多种误报,例如包含“hdaudio”的行。

    【讨论】:

      猜你喜欢
      • 2010-09-09
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      • 2019-09-02
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      相关资源
      最近更新 更多