Linux

如何獲取包含特定分區的磁碟名稱

  • September 26, 2021

例如,如果我知道一個分區,/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

引用自:https://unix.stackexchange.com/questions/226420