我被交给了一个目录的路径(有时是一个文件的路径)。
哪个实用程序/shell脚本将可靠地为我提供此目录(或文件)位于/存储的文件系统的UUID?
(文件系统的UUID是指"UUID=..."条目如 BLKID 所示 )
(这是在Redhat Linux上快乐的)
试试这一行:
sudo blkid -o value $(df --output=source "$file"|tail -1)|head -1
在上行中,$file
是保存文件/目录的变量。在调用线路之前,您可能需要检查文件/目录是否存在。
并且此行需要root权限(sudo
)
df
只是为了避免使用别名(如果您有别名),例如-T
选项,它与--output
冲突
一些测试 :
kent$ file="/home/kent/.vimrc"
kent$ sudo blkid -o value $(df --output=source "$file"|tail -1)|head -1
9da1040a-4a24-4a00-9c62-bad8cc3c028d
kent$ file="/etc"
kent$ sudo blkid -o value $(df --output=source "$file"|tail -1)|head -1
2860a386-af71-4a28-86d7-00ccf5d12b4d
找到路径的挂载点的设备,
DEVICE=$(df /path/to/some_file_or_directory | grep "$MOUNTPOINT$"| cut -f1 -d" ")
并获取设备的 UUID:
sudo blkid $DEVICE
简单地说,你可以这样输入,
pchero@mywork:~$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Jan 23 09:03 0267689b-b929-4f30-b8a4-08c742f0746f -> ../../sda2
lrwxrwxrwx 1 root root 10 Jan 23 09:03 2d682ea1-dab0-49ba-a77a-9335ccd47e58 -> ../../sda3
lrwxrwxrwx 1 root root 10 Jan 23 09:03 64e733e9-2e6a-4d3e-aabe-d0d26fbfc991 -> ../../sda1
lrwxrwxrwx 1 root root 10 Jan 23 09:03 a99fb356-4e01-4a1c-af41-001b0fd8a844 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Jan 23 09:03 f2f7618e-76c5-4e9a-9657-e002d9a66ccf -> ../../sda4