Jak mogę sprawdzić za pomocą polecenia powłoki, czy określony dysk zewnętrzny jest podłączony? (według etykiety lub identyfikatora urządzenia)
9
Jak mogę sprawdzić za pomocą polecenia powłoki, czy określony dysk zewnętrzny jest podłączony? (według etykiety lub identyfikatora urządzenia)
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.
lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no
./dev/disk/
zawiera następujące katalogi, które zawierają symboliczne łącze do rzeczywistych urządzeń. Te linki są dynamicznie tworzone i usuwane przezudev
, 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:
W moim skrypcie kopii zapasowej nawet nie sprawdzam obecności dysku, sprawdzam tylko wynik
mount
polecenia w następujący sposób:źródło
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.źródło
-f
wymienić punkty montowania? Domyślne wyjście i tak je wyświetlafindfs
jest do tego stworzony. Możesz wyszukiwać według:Etykieta FS
FS uuid
Etykieta GPT
UUID GPT
W wyszukiwaniu rozróżniana jest wielkość liter. Jeśli pasuje wiele partycji, wyświetlana jest tylko ostatnia.
źródło