![lsblk + 仅捕获磁盘](https://linux22.com/image/124712/lsblk%20%2B%20%E4%BB%85%E6%8D%95%E8%8E%B7%E7%A3%81%E7%9B%98.png)
我只想捕获来自的磁盘LSBLK
如此处所示,尽管 fd0 不是真正可供使用的磁盘,但它也会出现
在这种情况下我们可以这样做lsblk | grep 磁盘 | grep -v fd0
但也许我们错过了一些其他需要过滤它们的设备grep -v
还有哪些其他磁盘设备可能出现lsblk | grep 磁盘而不是真正的磁盘?
lsblk | grep disk
fd0 2:0 1 4K 0 disk
sda 8:0 0 100G 0 disk
sdb 8:16 0 2G 0 disk /Kol
sdc 8:32 0 2G 0 disk
sdd 8:48 0 2G 0 disk
sde 8:64 0 2G 0 disk
sdf 8:80 0 2G 0 disk
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 150G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 149.5G 0 part
├─vg00-yv_root 253:0 0 19.6G 0 lvm /
├─vg00-yv_swap 253:1 0 15.6G 0 lvm [SWAP]
└─vg00-yv_var 253:2 0 100G 0 lvm /var
sdb 8:16 0 2G 0 disk /Kol
sdc 8:32 0 2G 0 disk
sdd 8:48 0 2G 0 disk
sde 8:64 0 2G 0 disk
sdf 8:80 0 2G 0 disk
sr0 11:0 1 1024M 0 rom
答案1
如果您只想通过设备主编号标识为 SCSI 的磁盘8
,而不需要设备分区,则可以搜索设备主编号而不是字符串“disk”:
lsblk -d | awk '/ 8:/'
其中-d
(或--no-deps
) 选项指示不包括设备分区。
对于最近的 Linux 系统,更简单
lsblk -I 8 -d
正如用户尼克所指出的那样,应该足够了。
答案2
我只想获取所有磁盘的设备名称,没有任何其他输出。最终使用了这个:
lsblk -nd --output NAME
这会产生类似的结果
sda
sdb
-d
仅输出磁盘,
-n
删除标题行,并--output NAME
确保仅列出设备的名称。
答案3
我没有足够的声誉来发表评论,所以这是我的评论作为答案。
sudo lsblk -I 8,259 -d
如果您想将nvme
设备包含在列表中。
答案4
由于没有解决方案适合我,我只是再次使用jq
......
$ lsblk -d -J | jq '.blockdevices[] | select(.type == "disk" and .rm == false and .ro == false) | .name +" "+.size' -r
vda 70G
vdb 20G