Как я могу проверить с помощью команды оболочки, подключен ли конкретный внешний диск? (по метке или идентификатору устройства)
9
Как я могу проверить с помощью команды оболочки, подключен ли конкретный внешний диск? (по метке или идентификатору устройства)
Чтобы проверить, подключен ли конкретное устройство можно использовать 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
Оба могут использоваться независимо от того, установлено ли устройство.
lsblk -f | grep f9035fce-b3a1-4aee-80ef-44e432b78fdb | grep / -q && echo yes || echo no
./dev/disk/
содержит следующие каталоги, которые содержат символическую ссылку на реальные устройства. Эти ссылки динамически создаются и удаляютсяudev
, поэтому они всегда актуальны:Поэтому проверка на наличие символической ссылки будет использовать меньше ресурсов.
Вот пример проверки наличия диска с использованием его серийного номера:
В моем скрипте резервного копирования я даже не проверяю наличие диска, я только проверяю результат
mount
команды следующим образом:источник
lsusb
для просмотра списка подключенных USB-устройств, если ваш внешний диск подключен через интерфейс USB.lsblk -f
перечислить блочные устройства, UUID и их точки монтирования, поскольку ваш внешний диск является блочным устройством.источник
-f
перечислять точки монтирования? Выходные данные по умолчанию перечисляют их так или иначеfindfs
сделано для этого. Вы можете искать по:FS label
FS UUID
Этикетка GPT
GPT UUID
Поиски чувствительны к регистру. Если несколько разделов совпадают, отображается только последний.
источник