Получить путь устройства USB с заданным идентификатором устройства

Вы можете легко сделать это в bash:

input='2.6.4.0-91'
input=${input%-*}
input=${input//./}
echo "$input"
2640
3
10.02.2020, 01:50
1 ответ

Ответ @mosvy не работает в системах Debian, поскольку /sys/bus/usb/devices содержит символические ссылки. Также не будет работать переход по символическим ссылкам с grep -R, потому что эта файловая система содержит циклы символических ссылок.

Более простой способ получить то, что вам нужно, это:

lsusb | grep NameOfYourDevice | sed -nr 's|Bus (.*) Device ([^:]*):.*|/dev/bus/usb/\1/\2|p'

Он преобразует вывод lsusb (из пакета usbutils )в путь /dev/bus/usb/...

Если вам нужно блочное/символьное имя устройства, попробуйте что-то вроде этого:

device() {
    v=${1%:*}; p=${1#*:}
    for dir in `find /sys/ -name idVendor | rev | cut -d/ -f 2- | rev`; do
        if grep -q $v $dir/idVendor; then
            if grep -q $p $dir/idProduct; then
                find $dir -name 'device' | rev | cut -d / -f 2 | rev
            fi
        fi
    done
}
1
15.09.2021, 17:02

Теги

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