特定のパーティションを含むディスクの名前を取得する方法

特定のパーティションを含むディスクの名前を取得する方法

たとえば、パーティションがわかっている場合、そのパーティションを含むディスクの名前をどのように /dev/sda1知ることができますか(この場合)。/dev/sda

  • 出力はディスクパスでなければなりません(例:/dev/sda
  • 他のディスクタイプで動作するために必要なので、文字列操作は必要ありません。

ベストアンサー1

/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

/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

おすすめ記事