bash数组列表只有/ dev / sd [a-z] [a-z]模式

时间:2016-08-02 06:55:08

标签: arrays regex bash unix pattern-matching

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

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

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

那么如何才能使用正则表达式,仅列出/dev/sd* Unix硬盘设备?

1 个答案:

答案 0 :(得分: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或更好