Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash USB供应商和产品ID到设备绑定_Bash_Usb_Lsusb - Fatal编程技术网

Bash USB供应商和产品ID到设备绑定

Bash USB供应商和产品ID到设备绑定,bash,usb,lsusb,Bash,Usb,Lsusb,我有一个用于GNU/Linux上连接设备的USB视频和PID045e:0084。我需要绑定,因此我将VID:PID的lsusb输出进行grep,并将其转换为udevadm查找可接受的格式。最后,我获取结果路径的basename。比如: bus_dev=$(lsusb|grep VID:PID...) # Grep / Sed magic to extract bus and device from VID and PID. path=$(udevadm info -q path -n /dev/

我有一个用于GNU/Linux上连接设备的USB视频和PID<例如,代码>045e:0084。我需要绑定,因此我将
VID:PID
lsusb
输出进行grep,并将其转换为
udevadm
查找可接受的格式。最后,我获取结果路径的basename。比如:

bus_dev=$(lsusb|grep VID:PID...) # Grep / Sed magic to extract bus and device from VID and PID.
path=$(udevadm info -q path -n /dev/bus/usb/$bus_dev) # e.g., -n /dev/bus/usb/003/018
basename $path # e.g., /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.3/3-2.3.1
# e.g., yields 3-2.3.1
我可以这样使用它:

echo 3-2.3.1|sudo tee /sys/bus/usb/drivers/usb/unbind

从USB供应商处获得绑定和产品ID的首选方式是什么?

您是指类似的方式吗

vidpid="1d6b:0002"
bus_dev=`lsusb | grep "ID\s$vidpid" | sed 's/^.*Bus\s\([0-9]\+\)\sDevice\s\([0-9]\+\).*$/\1\/\2/g' | tail -n 1` 
path=$(udevadm info -q path -n /dev/bus/usb/$bus_dev)
basename $path

不完全是我想要的。我不需要“SED/Grep魔术”部分(这实际上是我试图避免的)。我已经做得很好了,但我希望能找到更传统、更不粗俗的东西。也许有一种方法可以从udev查询这个问题?我的和你的很相似:#$1-VID[:PID]usb_id_to_bind(){declare-r dev_name=“$(lsusb-sed-rn's_^Bus([0-9]{3})设备([0-9]{3}):id''1'.\u/dev/Bus/usb/\1/\2_p')“declare-r dev u path=“$(udevadm info-q path-n“$dev name”)“name”$dev basepath”}