если я выполняю общее lsusb
я получаю что-то как:
Соедините шиной 003 Устройства 003: идентификатор 1a86:7523 Последовательный адаптер USB QinHeng Electronics HL-340
но это не показывает путь файла устройств (т.е. ttyUSB0). это существует команда, которая делает это?
о нас dmesg
и udevadm info
они являются слишком подробными.
Я быть бы, чтобы иметь более простой вывод, лучшее должно было бы добавить просто путь файла устройств к выводу lsusb, чего-то как:
Соедините шиной 003 Устройства 003: идентификатор 1a86:7523 Последовательный адаптер USB QinHeng Electronics HL-340/dev/ttyusb0
много из скопировать/вставить принесенного меня снова здесь надеющийся, что это было бы полезно для других и также улучшить мой код
Я использовал почти идеальный код из ответа в этом вопросе и добавил/удалил некоторый небольшой материал
#!/bin/bash
for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev); do
(
syspath="${sysdevpath%/dev}"
devname="$(udevadm info -q name -p $syspath)"
[[ "$devname" == "bus/"* ]] && continue
[[ "$devname" == "input/"* ]] && continue
[[ "$devname" == "video0"* ]] && continue
eval "$(udevadm info -q property --export -p $syspath)"
[[ -z "$ID_SERIAL" ]] && continue
busnum="$(udevadm info -a -p $(udevadm info -q path -n /dev/$devname) | awk -F "==" '/busnum/ {gsub("\"","");print $2}' | head -1)"
devnum="$(udevadm info -a -p $(udevadm info -q path -n /dev/$devname) | awk -F "==" '/devnum/ {gsub("\"","");print $2}' | head -1)"
bus_dev=${busnum}:${devnum}
lsusb="$(lsusb -s $bus_dev)"
echo "$lsusb - /dev/$devname"
)
done
вывод:
Соедините шиной 003 Устройства 005: идентификатор 1a86:7523 Последовательный адаптер USB QinHeng Electronics HL-340-/dev/ttyUSB0
Примечание: у меня нет опыта Unix поэтому, если требуется улучшить код, сделайте!