如果我运行公共的,lsusb
我会得到如下结果:
总线 003 设备 003:ID 1a86:7523 秦恒电子 HL-340 USB 串口适配器
但它没有显示设备文件路径(即 ttyUSB0)。是否存在执行此操作的命令?
而且它们太冗长了dmesg
。udevadm info
我宁愿有一个更简单的输出,最好的方法是将设备文件路径附加到 lsusb 的输出,例如:
总线 003 设备 003:ID 1a86:7523 秦恒电子 HL-340 USB 串行适配器 /dev/ttyUSB0
答案1
大量的复制/粘贴让我再次来到这里,希望这对其他人有帮助,也能改进我的代码
我使用了答案中几乎完美的代码这个问题并添加/删除了一些小东西
#!/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/"* ]] || [[ "$devname" == "input/"* ]] || [[ "$devname" == "video0"* ]] || exit
eval "$(udevadm info -q property --export -p $syspath)"
[[ -z "$ID_SERIAL" ]] && exit
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:ID 1a86:7523 秦恒电子 HL-340 USB 串行适配器 - /dev/ttyUSB0
注意:我没有任何 Unix 经验,所以如果您想改进代码,请这样做!