如何确定USB设备类别并存储设备编号?

Cof*_*man 4 grep bash usb regular-expression

我正在制作一个脚本来确定连接的 USB 设备是否是大容量存储设备,如果是,则存储设备编号。我还希望它可以与多个连接的 USB 记忆棒一起使用。

这是基本思想:

如果lsusb -t | grep Class=Mass匹配,则将设备 ID 保存为变量。

   |__ Port 4: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 480M
               ^^^^^
Run Code Online (Sandbox Code Playgroud)

换句话说:如果“Dev x”后面的词与我的搜索匹配,我该如何获取?

我对 Linux、bash 或 regex 没有那么熟悉。如果这很奇怪或不切实际,那么我愿意接受其他建议。

alp*_*pha 5

你可以使用 awk:

lsusb -t | awk -F '[:,]''/Class=Mass/{print $2}'
Run Code Online (Sandbox Code Playgroud)

我们搜索Class=Mass,分隔符是:,如果我们找到,Class=Mass那么我们打印输出的第二列,这将为您留下:

Dev 5
Run Code Online (Sandbox Code Playgroud)