質問があります。 dbusとudiskを使用するのが最善の方法のようです。だから私は問題を考案しました。各「マウント済み」パーティションに対してラベルとデバイステーブルを作成します。
"" /dev/sda1
"ROOT" /dev/sda2
"BACKUP" /dev/sdb1
...
問題は、この問題を解決する方法について考えるほど混乱することです。誰でもいくつの提案をすることができますか?
答え1
たぶん、次のようなものがあります。
udevadm info --export-db | sed '
/^E: DEVNAME=/{s///;h;d;}
/^E:[^=]*LABEL=/!d
G;s/[^=]*=\(.*\)\n/"\1" /'
これに対応するudisks
ものは次のとおりです。
udisks --dump | sed '
/^[[:blank:]]*device-file:[[:blank:]]*/{s///;h;d;}
/^[[:blank:]]*label:.*[^[:blank:]]/!d
G;s/[^:]*:[[:blank:]]*\(.*\)\n/"\1" /'
答え2
私はあなたが探しているものがすでに次のコマンドによって提供されていると思いますblkid
。
/dev/sda1: LABEL="SYSTEM_DRV" UUID="10BE12331238FD148" TYPE="ntfs"
/dev/sda2: LABEL="Windows7_OS" UUID="5CF2E12AD3438B42" TYPE="ntfs"
/dev/sda3: LABEL="Lenovo_Recovery" UUID="C43211B2399007C54" TYPE="ntfs"
/dev/sda5: UUID="4835b90f-4845-1234-8dcd-fbcf332338f8" TYPE="ext4"
/dev/sda6: UUID="av6WTb-CU69-4Ump-10dD-sudd-fTtC-Gf12AL" TYPE="LVM2_member"
/dev/mapper/vg_grinchy-lv_root: UUID="75e0a75d-45d3-463c-bd87-9f7e123fd456" TYPE="ext4"
特定の情報のリストを取得するには、次のようなblkid -o list
いくつかのコマンドを使用します。awk
$ blkid -o list|tail -n +3|awk '{print "\""$3"\"", $1}'|sed 's/(not//'|column -t
"SYSTEM_DRV" /dev/sda1
"Windows7_OS" /dev/sda2
"Lenovo_Recovery" /dev/sda3
"/boot" /dev/sda5
"" /dev/sda6
"/" /dev/mapper/vg_grinchy-lv_root
"<swap>" /dev/mapper/vg_grinchy-lv_swap
"/home" /dev/mapper/vg_grinchy-lv_home
答え3
awk '$4 ~ /^sd[a-z][1-9][0-9]?/ {label="";
cmd="blkid -o value -s LABEL /dev/" $4;
cmd | getline label;
printf "\"%s\": /dev/%s\n",label,$4;}' /proc/partitions