Как мне перечислить все устройства хранения (флэш-накопители / внешние жесткие диски), которые подключены через USB, из командной строки?

18

Я хотел бы перечислить только устройства, подключенные через USB.

Проблема в том, что Ubuntu видит все флешки как съемные (в /sys/block/*/removable ), но не видит внешние жесткие диски одинаково.

Это немного более конкретно, чем Как определить устройство USB?

user1556438
источник

Ответы:

14

Если вы ищете смонтированные диски, просто

df

перечислит их вместе со всеми вашими другими дисками вместе с некоторой полезной информацией.

Джаз
источник
2
но это дает все блочные устройства, а не только подключенные через USB.
Джереми Керр
9

Я бы порекомендовал проверить свойства udev устройств, а именно ID_BUSсвойства:

for device in /sys/block/*
do
    if udevadm info --query=property --path=$device | grep -q ^ID_BUS=usb
    then
        echo $device
    fi
done
Джереми Керр
источник
Это выплевывает устройства для моего встроенного кард-ридера, даже если там не вставлены карты.
b_laoshi
@b_laoshi: да, они все равно будут отображаться как устройства хранения, но без носителя.
Джереми Керр
2

я думаю

lsusb

даст вам то, что вы хотите, по крайней мере, если я понимаю, что вы спрашиваете. (Конечно, в нем перечислены все USB-устройства, а не только хранилище.)

Kelley
источник
2

Список только подключенных USB- устройств хранения

Изменить: Когда у меня будет время, я еще раз вернусь к этому сообщению, чтобы в нем были перечислены только устройства USB. На данный момент в нем перечислены все установленные устройства, /mediaкоторые могут быть достаточно хорошими для некоторых людей.

Перечисление всех устройств, установленных в /media

Все остальные ответы здесь, по-видимому, не в состоянии отфильтровывать устройства, не являющиеся запоминающими устройствами USB, или запоминающие устройства, не являющиеся запоминающими устройствами USB. Вот команда, которая должна перечислять только устройства хранения, подключенные через USB. Единственное исключение, которое, вероятно, ни для кого не имеет значения, заключается в том, что на нем не будут отображаться подключенные оптические накопители USB со смонтированным носителем.

Требования, чтобы это работало

  • USB-устройства должны быть установлены. Настольные ОС Ubuntu по умолчанию автоматически монтируются
  • Носитель должен быть подключен в /mediaкаталоге. Если ваше устройство USB сконфигурировано в fstab для монтирования где-то еще, вам нужно настроить следующие команды

Список устройств хранения USB
В моем конкретном случае для сценария, который я пишу, я перечисляю отдельные разделы. Вот две команды. Один перечислит разделы подключенных устройств, а другой просто перечислит устройства.

  • Перечисление разделов:
    lsblk | grep /media | grep -oP "sd[a-z][0-9]?" | awk '{print "/dev/"$1}'
    Пример вывода:

    /dev/sdd1
    /dev/sdi1
    /dev/sdj1
    /dev/sdj2
    
  • Список устройств:
    lsblk | grep /media | grep -oP "sd[a-z]" | awk '{print "/dev/"$1}' | sort | uniq
    Пример вывода:

    /dev/sdd
    /dev/sdi
    /dev/sdj
    
b_laoshi
источник
Как насчет разделов внутренних дисков, которые подключаются /media?
17
Это создаст проблему, но она вряд ли повлияет на большинство пользователей. Я подумаю над этим и обновлю позже.
b_laoshi