Odpowiedzi:
Aby sprawdzić, czy urządzenie jest podłączone specyficzny można korzystać grep
z -q
opcji, aby szukać wyjścia lsusb
albo lsblk
, na przykład
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
lub z if
:
uuid=f9035fce-b3a1-4aee-80ef-44e432b78fdb
if lsblk -f | grep -wq $uuid; then
echo yes
else
echo no
fi
Oba mogą być używane bez względu na to, czy urządzenie jest zamontowane.
/dev/disk/
zawiera następujące katalogi, które zawierają symboliczne łącze do rzeczywistych urządzeń. Te linki są dynamicznie tworzone i usuwane przez udev
, więc są zawsze aktualne:
Dlatego sprawdzanie istnienia dowiązania symbolicznego zużyje mniej zasobów.
Oto przykład testowania obecności dysku przy użyciu jego numeru seryjnego:
test -e /dev/disk/by-id/wwn-0x5002538d408be9e0 && echo yes || echo no
W moim skrypcie kopii zapasowej nawet nie sprawdzam obecności dysku, sprawdzam tylko wynik mount
polecenia w następujący sposób:
mount -o noatime $DESTINATION_PARTITION $DESTINATION_DIR || exit 1
lsusb
do wyświetlania listy podłączonych urządzeń USB, jeśli dysk zewnętrzny jest podłączony przez interfejs USB.
lsblk -f
aby wyświetlić listę urządzeń blokowych, UUID i ich punktów instalacji, ponieważ dysk zewnętrzny jest urządzeniem blokowym.
-f
wymienić punkty montowania? Domyślne wyjście i tak je wyświetla
findfs
jest do tego stworzony. Możesz wyszukiwać według:
Etykieta FS
findfs LABEL="Ubuntu" &>/dev/null
FS uuid
findfs UUID="f9035fce-b3a1-4aee-80ef-44e432b78fdb" &>/dev/null
Etykieta GPT
findfs PARTLABEL="EFI system partition" &>/dev/null
findfs PARTUUID="85e66d2f-3709-4060-938e-ffe836433cc9" &>/dev/null
W wyszukiwaniu rozróżniana jest wielkość liter. Jeśli pasuje wiele partycji, wyświetlana jest tylko ostatnia.
lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no
.