Jos*_*nto 7 bash partition uuid
我想将 Bash 变量定义PART_ID
为等于/dev/sdb1
分区的 UUID 。我最接近所需答案的是以下输出:
ls -ld /dev/disk/by-uuid/* | grep sdb1
Run Code Online (Sandbox Code Playgroud)
对我来说,它给出:
lrwxrwxrwx 1 root root 10 Mar 16 17:02 /dev/disk/by-uuid/d26c3e60-0cfb-4118-9dec-1f1819439790 -> ../../sdb1
Run Code Online (Sandbox Code Playgroud)
这对我来说不是一个可接受的值PART_ID
。相反,PART_ID
应该等于的是d26c3e60-0cfb-4118-9dec-1f1819439790
.
Sté*_*las 13
请注意,这是分区上文件系统的 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)
Run Code Online (Sandbox Code Playgroud)
第一个可能需要超级用户权限或至少需要读取设备的权限。
如果文件系统已挂载,您还可以使用:
fs_uuid=$(findmnt -fn -o UUID /dev/sdb1)
Run Code Online (Sandbox Code Playgroud)