Wie bekomme ich die UUID des Dateisystems mit einem Pfad?

9

Mir wird ein Pfad eines Verzeichnisses oder einer Datei übergeben.

Welches Dienstprogramm / Shell-Skript gibt mir zuverlässig die UUID des Dateisystems, in dem sich dieses Verzeichnis / diese Datei befindet?

Mit UUID des Dateisystems meine ich den UUID=...Eintrag, wie zblkid

Ich benutze Redhat Linux.

(Jemand schlug vor, dies hier unter unix.stackexchange.com zu erfragen, also habe ich es vom ursprünglichen stackexchange.com verschoben.)

Linfan
quelle
3
Informationen zum Abrufen des Dateisystems finden Sie unter unix.stackexchange.com/questions/11311/… . Anschließend können Sie es ausführen blkid.
Muru
Beachten Sie, dass nicht alle Dateisysteme eine UUID haben. blkid gibt Ihnen keine UUID, z. für NFS-Halterungen.
Oliver

Antworten:

8

Eine Option ist stat+ findmntCombo:

findmnt -n -o UUID $(stat -c '%m' "$path")

Hier wird der -nHeader deaktiviert und -o UUIDnur der UUID-Wert gedruckt. Die Option -c '%m'von statist vorhanden, um nur den Mountpunkt des angegebenen Pfads auszugeben.

jimmij
quelle
2
Es besteht keine Notwendigkeit für stat:findmnt -no uuid -T "$path"
don_crissti
3

Sie können df verwenden, um den Einhängepunkt der Datei zu ermitteln, und dann das Ergebnis auf blkid auf die UUID anwenden. Sie müssen (mindestens) blkid als root ausführen, damit dies funktioniert:

FILE_OR_DIR="$PWD"
blkid -s UUID -o value $( df "$FILE_OR_DIR" )
Roaima
quelle
Besser wäre -o export, da dadurch die Ausgabe des Formulars gedruckt wird UUID=....
Muru
@muru war mir nicht klar, ob nur die UUID erforderlich war ( -o value) oder ein Typausdruck UUID="value"( -o export). Ich habe Wert gewählt.
Roaima