Linux
從 UUID 獲取設備掛載點的有效方法
在我正在處理的腳本中,必須使用變數 UUID 來獲取設備所連接的目前掛載點。我想出的解決方案是這個:
UUID='fc70ae3d-65e7-4437-a371-b237c8ca3f56h' MNTPNT=$(lsblk -o +UUID | grep ${UUID} | tr -s ' ' | cut -d ' ' -f 7)
執行命令後,變數 MNTPNT 按預期儲存目前掛載點。不過,這是一個相當廣泛的命令,我不禁想到必須有一種更有效的方法來實現相同的目標。
是否有可能提出更好的解決方案?主要是優化問題。提前感謝您的任何見解。
findmnt -noTARGET "/dev/disk/by-uuid/$UUID" grep "$(stat -Lc '%#t %#T' "/dev/disk/by-uuid/$UUID" | xargs printf '%d:%d')" /proc/self/mountinfo awk -v dev="$(stat -Lc '%#t %#T' "/dev/disk/by-uuid/$UUID" | xargs printf '%d:%d')" '$3~dev{print$5}' /proc/self/mountinfo
為了修剪綁定安裝:
awk -v dev="$(stat -Lc '%#t %#T' "/dev/disk/by-uuid/$UUID" | xargs printf '%d:%d')" '$3~dev&&$4=="/"{print$5}' /proc/self/mountinfo
請記住,設備可以安裝在多個位置。
怪物
$(stat ... | xargs printf)
只是因為stat(1)
無法以十進制列印主要,次要數字。僅解析 的輸出ls -Hl
可能會更好(並且更便攜)。