Відповіді:
Щоб дізнатися, чи конкретний пристрій можна використовувати grep
з -q
можливістю пошуку виведення lsusb
або lsblk
, наприклад ,
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
або з if
:
uuid=f9035fce-b3a1-4aee-80ef-44e432b78fdb
if lsblk -f | grep -wq $uuid; then
echo yes
else
echo no
fi
Обидва можна використовувати незалежно від того, чи встановлений пристрій.
/dev/disk/
містить наступні каталоги, які містять символічне посилання на реальні пристрої. Ці посилання динамічно створюються та видаляються udev
, тому вони завжди актуальні:
Тому для перевірки існування символьної посилання буде використано менше ресурсів.
Ось приклад тестування наявності диска з використанням його серійного номера:
test -e /dev/disk/by-id/wwn-0x5002538d408be9e0 && echo yes || echo no
У своєму резервному скрипті я навіть не перевіряю наявність диска, я перевіряю лише результат mount
команди, як це:
mount -o noatime $DESTINATION_PARTITION $DESTINATION_DIR || exit 1
lsusb
для перерахування підключеного USB-пристрою, якщо ваш зовнішній диск підключений через інтерфейс USB.
lsblk -f
перелічити блокові пристрої, UUID та їх точки монтажу, оскільки ваш зовнішній диск є блоковим пристроєм.
-f
перераховувати точки монтажу? Вихідні дані за замовчуванням все одно перераховують їх
findfs
для цього створено. Ви можете шукати за:
FS label
findfs LABEL="Ubuntu" &>/dev/null
FS uuid
findfs UUID="f9035fce-b3a1-4aee-80ef-44e432b78fdb" &>/dev/null
GPT label
findfs PARTLABEL="EFI system partition" &>/dev/null
findfs PARTUUID="85e66d2f-3709-4060-938e-ffe836433cc9" &>/dev/null
Пошукові записи залежать від регістру. Якщо кілька розділів збігаються, відображається лише останній.
lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no
.