web-dev-qa-db-ja.com

USBデバイスクラスを決定し、デバイス番号を保存する方法は?

接続されているUSBデバイスが大容量記憶装置であるかどうかを判断するスクリプトを作成しています。大容量記憶装置である場合は、デバイス番号を保存します。また、複数の接続されたUSBスティックで動作するようにしたいと思います。

基本的な考え方は次のとおりです。

lsusb -t | grep Class=Massが一致する場合は、デバイスIDを変数として保存します。

   |__ Port 4: Dev 5, If 0, Class=Mass Storage, Driver=usb-storage, 480M
               ^^^^^

言い換えると、「Dev x」の後の単語が検索に一致する場合、どうすればよいですか?

私はLinux、bash、または正規表現の経験があまりありません。これが奇妙または非現実的である場合、私は他の提案を受け入れます。

4
Coffeeman

あなたはawkを使うことができます:

lsusb -t | awk -F '[:,]''/Class=Mass/{print $2}'

Class=Massを検索し、区切り文字は:,です。Class=Massが見つかった場合は、出力の2列目を出力します。

Dev 5
5
alpha