Bashでdbus/udisksを使用するパーティションラベルとデバイスのリスト

Bashでdbus/udisksを使用するパーティションラベルとデバイスのリスト

質問があります。 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

よりblkid詳細はマニュアルページ

答え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

関連情報