Risposte:
Per verificare se è collegato un dispositivo specifico, è possibile utilizzare grep
l' -q
opzione per cercare l'output di lsusb
o lsblk
, ad es
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
o con if
:
uuid=f9035fce-b3a1-4aee-80ef-44e432b78fdb
if lsblk -f | grep -wq $uuid; then
echo yes
else
echo no
fi
Entrambi possono essere utilizzati indipendentemente dal fatto che il dispositivo sia montato.
/dev/disk/
contiene le seguenti directory, che contengono collegamenti simbolici a dispositivi reali. Questi collegamenti vengono creati e rimossi in modo dinamico da udev
, quindi sono sempre aggiornati:
Quindi, verificando l'esistenza del collegamento simbolico, verranno utilizzate meno risorse.
Ecco un esempio che verifica la presenza di un disco usando il suo numero seriale:
test -e /dev/disk/by-id/wwn-0x5002538d408be9e0 && echo yes || echo no
Nel mio script di backup non controllo nemmeno la presenza del disco, controllo solo il risultato del mount
comando in questo modo:
mount -o noatime $DESTINATION_PARTITION $DESTINATION_DIR || exit 1
lsusb
per elencare il dispositivo USB collegato se il disco esterno è collegato tramite l'interfaccia USB.
lsblk -f
per elencare i dispositivi a blocchi, gli UUID e i loro punti di montaggio poiché il disco esterno è un dispositivo a blocchi.
-f
elencare i punti di montaggio? L'output predefinito li elenca comunque
findfs
è fatto per questo. Puoi cercare per:
Etichetta FS
findfs LABEL="Ubuntu" &>/dev/null
Uuid
findfs UUID="f9035fce-b3a1-4aee-80ef-44e432b78fdb" &>/dev/null
Etichetta GPT
findfs PARTLABEL="EFI system partition" &>/dev/null
findfs PARTUUID="85e66d2f-3709-4060-938e-ffe836433cc9" &>/dev/null
Le ricerche fanno distinzione tra maiuscole e minuscole. Se più partizioni corrispondono, viene visualizzata solo l'ultima.
lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no
.