Antworten:
Um zu testen, ob ein bestimmtes Gerät angeschlossen ist, können Sie grep
mit der -q
Option die Ausgabe von lsusb
oder durchsuchen lsblk
, z
uuid=f9035fce-b3a1-4aee-80ef-44e432b78fdb
lsblk -f | grep -wq $uuid && echo yes || echo no
devicename="some Inc. Keyboard"
lsusb | grep -q "$devicename" && echo yes || echo no
oder mit if
:
uuid=f9035fce-b3a1-4aee-80ef-44e432b78fdb
if lsblk -f | grep -wq $uuid; then
echo yes
else
echo no
fi
Beide können verwendet werden, unabhängig davon, ob das Gerät montiert ist.
/dev/disk/
enthält die folgenden Verzeichnisse, die eine symbolische Verknüpfung zu realen Geräten enthalten. Diese Links werden dynamisch erstellt und entfernt von udev
, sodass sie immer auf dem neuesten Stand sind:
Wenn Sie also nach dem Vorhandensein des Symlinks suchen, werden weniger Ressourcen benötigt.
Hier ist ein Beispiel zum Testen des Vorhandenseins einer Festplatte anhand ihrer Seriennummer:
test -e /dev/disk/by-id/wwn-0x5002538d408be9e0 && echo yes || echo no
In meinem Sicherungsskript überprüfe ich nicht einmal die Festplattenpräsenz, sondern nur das Ergebnis des mount
Befehls wie folgt:
mount -o noatime $DESTINATION_PARTITION $DESTINATION_DIR || exit 1
lsusb
Zum Auflisten des angeschlossenen USB-Geräts, wenn Ihre externe Festplatte über eine USB-Schnittstelle angeschlossen ist.
lsblk -f
zum Auflisten von Blockgeräten, UUIDs und deren Einhängepunkten, da Ihre externe Festplatte ein Blockgerät ist.
-f
? Die Standardausgabe listet sie trotzdem auf
findfs
ist dafür gemacht. Sie können suchen nach:
FS-Label
findfs LABEL="Ubuntu" &>/dev/null
FS uuid
findfs UUID="f9035fce-b3a1-4aee-80ef-44e432b78fdb" &>/dev/null
GPT-Label
findfs PARTLABEL="EFI system partition" &>/dev/null
findfs PARTUUID="85e66d2f-3709-4060-938e-ffe836433cc9" &>/dev/null
Bei der Suche wird zwischen Groß- und Kleinschreibung unterschieden. Wenn mehrere Partitionen übereinstimmen, wird nur die letzte angezeigt.
lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no
.