Получить имя устройства подключенного USB-диска

Чтобы изменить переменную readline только для определенной функции завершения, можно установить переменную readline во время выполнения функции, а затем $PROMPT_COMMAND изменить ее обратно.

_foo_complete() {
    # retrieve the original value
    local width=$(bind -v | sed -n 's/^set completion-display-width //p')

    if [[ $width -ne 0 ]]; then
        # change the readline variable
        bind "set completion-display-width 0"

        # set up PROMPT_COMMAND to reset itself to its current value
        PROMPT_COMMAND="PROMPT_COMMAND=$(printf %q "$PROMPT_COMMAND")"

        # set up PROMPT_COMMAND to reset the readline variable
        PROMPT_COMMAND+="; bind 'set completion-display-width $width'"
    fi

    # whatever the function normally does follows
    COMPREPLY=(aa bb)
}
complete -F _foo_complete foo
7
04.06.2017, 16:24
2 ответа

Вы можете сделать это с помощью команды lsblk.

lsblk -l -o name,tranдает

NAME TRAN
sda  sata
sda1 
sdb  usb
sdc  usb
sr0  sata

-lозначает формат списка, поэтому его легче анализировать. В противном случае вы получите такой древовидный формат:

NAME   TRAN
sda    sata
└─sda1
sdb    usb
sr0    sata

Указание других флагов даст вам больше информации, такой как FSTYPE, LABEL, UUID, MOUNTPOINT и многое другое, просто запустите lsblk --help, чтобы просмотреть все параметры.

Вы можете использовать флаги --paths --noheadings --scsi, чтобы вывод выводился следующим образом:

sata   /dev/sda
usb    /dev/sdb
usb    /dev/sdc
sata   /dev/sr0

, а затем grepнад входом, чтобы отфильтровать эти строки с usb в начале строки.

8
27.01.2020, 20:16

Выполните lsusb , это дает имя устройств, подключенных через шину USB.

Как в:

$ lsusb
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 0421:0802 Nokia Mobile Phones CA-42 Phone Parent
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

См. также man lsusb

Описание

lsusb — это утилита для отображения информации о шинах USB в системы и подключенных к ней устройств.

4
27.01.2020, 20:16

Теги

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