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

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

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

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

16
задан 16 August 2017 в 06:49

5 ответов

Я думаю,

lsusb

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

0
ответ дан 16 August 2017 в 06:49

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

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

Список всех устройств, смонтированных в /media

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

Требования для этого для работы

  • USB-устройства должны быть смонтированы. Настольное OSs 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
    
2
ответ дан 16 August 2017 в 06:49

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

df

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

0
ответ дан 16 August 2017 в 06:49

Я бы порекомендовал проверить свойства 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
0
ответ дан 16 August 2017 в 06:49
sudo lshw -class disk -short

Список всех устройств и их удобочитаемые имена.

1
ответ дан 2 May 2020 в 17:36

Другие вопросы по тегам:

Похожие вопросы: