Linux
如何獲取包含特定分區的磁碟名稱
例如,如果我知道一個分區,
/dev/sda1
我如何獲取/dev/sda
包含該分區的磁碟名稱(在這種情況下)?
- 輸出應該只是到磁碟的路徑(如
/dev/sda
)。- 它不應該需要字元串操作,因為我需要它適用於不同的磁碟類型。
您可以在塊設備中觀察
/sys
給定的分區名稱。例如,/dev/sda1:$ ls -l /sys/class/block/sda1 lrwxrwxrwx 1 root root /sys/class/block/sda1 -> \ ../../devices/pci0000:00/.../ata1/host0/target0:0:0/0:0:0:0/block/sda/sda1
獲取 arg
/dev/sda1
並列印的腳本/dev/sda
是:part=$1 part=${part#/dev/} disk=$(readlink /sys/class/block/$part) disk=${disk%/*} disk=/dev/${disk##*/} echo $disk
我沒有 lvm 等可以嘗試,但可能有一些類似的路徑。
還有
lsblk
:$ lsblk -as /dev/sde1 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sde1 8:65 1 7.4G 0 part `-sde 8:64 1 7.4G 0 disk
正如@don_crissti 所說,您可以直接通過使用
-o pkname
獲取名稱列、-n
刪除標題以及-d
不包括持有者設備或從屬設備來直接獲取父級:lsblk -ndo pkname /dev/sda1