질문이 있습니다. 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