我将Subshell与Array一起使用,列出所有硬盘设备。
hdd=($(lsblk --nodeps -n -o name))
我只想要/dev/sd*
设备。
那么如何才能使用正则表达式,仅列出/dev/sd*
Unix硬盘设备?
答案 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或更好