web-dev-qa-db-ja.com

パーティションのUUIDを取得し、それに等しいものとしてBash変数を定義するにはどうすればよいですか?

Bash変数PART_ID/dev/sdb1パーティションのUUIDと等しいものとして定義したいと思います。私が望ましい答えに最も近いのは、次の出力です。

ls -ld /dev/disk/by-uuid/* | grep sdb1

私にとっては、

lrwxrwxrwx 1 root root 10 Mar 16 17:02 /dev/disk/by-uuid/d26c3e60-0cfb-4118-9dec-1f1819439790 -> ../../sdb1

これは、PART_IDを設定するための許容値ではありません。むしろPART_IDと等しいものはd26c3e60-0cfb-4118-9dec-1f1819439790です。

4
BH2017

パーティション自体のUUIDではなく、パーティション上のファイルシステム(またはudevスクリプトが認識しているUUIDを持つ他の構造化データ)のUUIDであることに注意してください(すべてのパーティション分割スキームがUUIDをパーティションに与えるわけではありません)。 blkidとmdadmのUUIDの違い? も参照してください。

LinuxベースのシステムでFS UUIDを取得するためのいくつかのオプション:

fs_uuid=$(blkid -o value -s UUID /dev/sdb1)
fs_uuid=$(lsblk -no UUID /dev/sdb1)
fs_uuid=$(udevadm info -n sdb1 -q property | sed -n 's/^ID_FS_UUID=//p')
fs_uuid=$(find /dev/disk/by-uuid -lname '*/sdb1' -printf %f)

最初のものは、スーパーユーザー特権、または少なくともデバイスを読み取るための権利を必要とする場合があります。

ファイルシステムがマウントされている場合は、次も使用できます。

fs_uuid=$(findmnt -fn -o UUID /dev/sdb1)
9

このようにできます

PART_ID=$(blkid -o value -s UUID /dev/sdb1)

2
Mongrel