Respostas:
Para testar se um dispositivo específico está conectado, você pode usar grep
com a -q
opção de pesquisar a saída lsusb
ou lsblk
, por exemplo,
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
ou com if
:
uuid=f9035fce-b3a1-4aee-80ef-44e432b78fdb
if lsblk -f | grep -wq $uuid; then
echo yes
else
echo no
fi
Ambos podem ser usados, independentemente de o dispositivo estar montado.
/dev/disk/
contém os seguintes diretórios, que contêm link simbólico para dispositivos reais. Esses links são criados e removidos dinamicamente por udev
, portanto, eles estão sempre atualizados:
Portanto, verificar a existência do link simbólico usará menos recursos.
Aqui está um exemplo testando a presença de um disco usando seu número de série:
test -e /dev/disk/by-id/wwn-0x5002538d408be9e0 && echo yes || echo no
No meu script de backup, eu nem checo a presença do disco, apenas o resultado do mount
comando, como este:
mount -o noatime $DESTINATION_PARTITION $DESTINATION_DIR || exit 1
lsusb
para listar o dispositivo USB conectado se o seu disco externo estiver conectado através da interface USB.
lsblk -f
para listar dispositivos de bloco, UUIDs e seus pontos de montagem, pois seu disco externo é um dispositivo de bloco.
-f
listar pontos de montagem? As listas de saída padrão los de qualquer maneira
findfs
é feito para isso. Você pode pesquisar 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
As pesquisas diferenciam maiúsculas de minúsculas. Se várias partições corresponderem, apenas a última será exibida.
lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no
.