Respuestas:
Para probar si un dispositivo específico está conectado, puede usar grep
la -q
opción para buscar la salida de , lsusb
o lsblk
por ejemplo
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
Ambos se pueden usar sin importar si el dispositivo está montado.
/dev/disk/
contiene los siguientes directorios, que contienen enlaces simbólicos a dispositivos reales. Estos enlaces se crean y eliminan dinámicamente udev
, por lo que siempre están actualizados:
Por lo tanto, verificar la existencia del enlace simbólico utilizará menos recursos.
Aquí hay un ejemplo que prueba la presencia de un disco usando su número de serie:
test -e /dev/disk/by-id/wwn-0x5002538d408be9e0 && echo yes || echo no
En mi script de respaldo, incluso no verifico la presencia del disco, solo verifico el resultado del mount
comando de esta manera:
mount -o noatime $DESTINATION_PARTITION $DESTINATION_DIR || exit 1
lsusb
para enumerar el dispositivo usb conectado si su disco externo está conectado a través de la interfaz USB.
lsblk -f
para enumerar dispositivos de bloque, UUID y sus puntos de montaje ya que su disco externo es un dispositivo de bloque.
-f
enumerar los puntos de montaje? La salida predeterminada los enumera de todos modos
findfs
está hecho para esto. Puedes buscar por:
Etiqueta FS
findfs LABEL="Ubuntu" &>/dev/null
FS uuid
findfs UUID="f9035fce-b3a1-4aee-80ef-44e432b78fdb" &>/dev/null
Etiqueta GPT
findfs PARTLABEL="EFI system partition" &>/dev/null
findfs PARTUUID="85e66d2f-3709-4060-938e-ffe836433cc9" &>/dev/null
Las búsquedas distinguen entre mayúsculas y minúsculas. Si coinciden varias particiones, solo se muestra la última.
lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no
.