【问题标题】:bash array list only /dev/sd[a-z][a-z] pattern仅 bash 数组列表 /dev/sd[a-z][a-z] 模式
【发布时间】:2016-12-07 09:45:06
【问题描述】:

我将 Subshel​​l 与 Array 一起使用,以列出所有 HDD 设备。

hdd=($(lsblk --nodeps -n -o name))

我只想要/dev/sd* 设备。

那么我如何使用正则表达式来仅列出/dev/sd* Unix HDD 设备?

【问题讨论】:

  • lsblk --nodeps -n -o name | grep ^sd ?
  • 使用:lsblk --nodeps -n -o name /dev/sd*
  • 因为 SCSI 磁盘的主设备号为 8:lsblk --nodeps -n -o name -I8
  • @John1024 :很好的笔记,^
  • @John1024 为什么不让它成为答案?看起来这就是 OP真正想要的。

标签: arrays regex bash unix pattern-matching


【解决方案1】:

因为 SCSI 磁盘的主设备号为 8:

lsblk --nodeps -n -o name -I8

-I 是 --include 的缩写,它告诉 lsblk 要在输出中包含哪些主要设备号。 8 对应于SCSI disk devices,对应于/dev/sd*。

这是在 lsblk 上从 util-linux 2.28 测试的。 --include 选项似乎需要 util-linux 2.22 或更好。 2.22于2012年发布。

文档

来自man lsblk:

-I, --include list
包括由逗号分隔的主要设备编号列表指定的设备。已应用过滤器 仅限顶级设备。

变化

一个类似但更具包容性的选项是-S:

lsblk --nodeps -n -o name -S

-S 列出所有 SCSI 设备。例如,这将显示 SCSI DVD 驱动器(主要设备编号 11)以及 SCSI 硬盘。 -S 需要 util-linux version 2.23 或更好

【讨论】:

    猜你喜欢
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多