Ich bin Anfänger in Ubuntu Linux und ich muss ein einfaches Bash-Skript schreiben, das das erforderliche Flash-Laufwerk (das nur eine vfat- Partition enthält) mithilfe der UUID dieser Partition identifizieren und den Mount-Punkt dieses Flash-Laufwerks ermitteln kann. Die / etc / fstab Die Datei enthält keine Mountig-Regel für dieses Laufwerk. Lassen Sie zum Beispiel die Partitions-UUID als 7DCD-9380. Mit dem Readlink-Tool kann ich einen Geräte-Link im / dev- Katalog erhalten:
teddy@st1:~$ readlink -f /dev/disk/by-uuid/7DCD-9380
/dev/sdc1
Aber wie kann ich den Mount-Punkt des Geräts / dev / sdc1 ermitteln ?
/mnt/flashdrive
(nachmkdir /mnt/flashdrive
natürlich). Welchen spezifischen Montagepunkt suchen Sie?Antworten:
Was Sie suchen, ist
findmnt
. Zum Beispiel:oder
Wenn nichts mit dieser UUID gemountet ist, wird nichts ausgegeben und der Rückkehrcode ist 1 (Fehler), andernfalls wird der Mountpunkt ausgegeben und der Rückkehrcode ist 0 (Erfolg).
Erläuterung der Optionen
quelle
mount
weiß das.Beispiel:
Oder (wahrscheinlich schneller):
quelle
/etc/mtab
.Die Mount-Tabelle des Kernels befindet sich bei
/proc/mounts
. Dies ist etwas zuverlässiger als/etc/mtab
, da ein System- / Softwarefehler dazu führen kann, dass dasmtab
Produkt beschädigt oder nicht zum richtigen Zeitpunkt geschrieben wird.quelle
Das tatsächliche Gerät
blkid
anhand der UUID zu finden, ist möglicherweise besser als Ihrereadlink
Lösung, die auf udev basiert.Um den Einhängepunkt für dieses Gerät zu erhalten, können Sie Folgendes verwenden:
oder
Letzteres ist portabler, da / proc nur für Linux verfügbar ist. Die
df
Lösung mit der-P
Option (POSIX) sollte auch auf Mac und anderen Unix-Systemen funktionieren.Natürlich würden beide brechen, wenn Ihr Einhängepunkt Leerzeichen enthält. Aber niemand montiert Sachen in "/ mnt / evil mount point /", oder?
Wenn Sie befürchten, dass Ihr Vorgänger genau das getan hat, können Sie Perl anstelle von awk verwenden:
(Das Grep könnte auch von Perl gehandhabt werden, aber für einige ist es möglicherweise schwieriger zu lesen.)
Der Perl-Regex ersetzt 5 Gruppen von Nicht-Leerzeichen + Leerzeichen durch nichts und lässt nur den Rest der Zeile übrig. Welches ist der Einhängepunkt einschließlich aller möglichen Leerzeichen.
quelle