获取所连接 USB 设备的名称和设备文件路径

获取所连接 USB 设备的名称和设备文件路径

如果我运行公共的,lsusb我会得到如下结果:

总线 003 设备 003:ID 1a86:7523 秦恒电子 HL-340 USB 串口适配器

但它没有显示设备文件路径(即 ttyUSB0)。是否存在执行此操作的命令?

而且它们太冗长了dmesgudevadm 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 经验,所以如果您想改进代码,请这样做!

相关内容