web-dev-qa-db-ja.com

USBストレージデバイスのみを一覧表示するLinuxコマンドとは何ですか?

コンピューターに接続されているUSBストレージデバイスのみを一覧表示したいと思います。これらはSCSIディスクであるため、コマンドlsscsiを使用しました。このコマンドは、USBドライブと、コンピューターのハードドライブおよびCDドライブを一覧表示します。 USBではないメモリストレージを無視する方法はありますか? lsusbも試しましたが、これにはキーボード、マウス、その他の非ストレージデバイスが含まれます。

3
Kalmar

この回答 接続されているすべてのブロックデバイスのリストをチェックし、udevadminで繰り返して、それぞれのID_BUSをチェックします。

/sys/blockで接続されているすべてのブロックデバイスを確認できます。これは、リンクされた回答のbashスクリプトで、USBストレージデバイスかどうかを通知する必要があります。

for device in /sys/block/*
do
    if udevadm info --query=property --path=$device | grep -q ^ID_BUS=usb
    then
        echo $device
    fi
done
6
111---

私はちょうど関数を書きました:

dmu() {
  # Criação       : 2019-07-24 RBR.
  local disks=`lsblk -o name,tran | awk '$2=="usb"{print $1}' | tr "\n" " " | sed -E "s/^ +//g;s/ +$//g"`
  local mask=`sed -E "s/ /\([\\\\t ]|[0-9]\)+|/g;s/$/\([\\\\t ]|[0-9]\)+/g" <<< ${disks}`
  lsblk -f | sed -n "1p" 
  lsblk -f | grep -E "$mask"
}
1
Regis Barbosa

Lsblkを使用できます。

lsblk 
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 465,8G  0 disk 
├─sda1   8:1    0   285M  0 part /boot
├─sda2   8:2    0   1,9G  0 part [SWAP]
├─sda3   8:3    0  74,5G  0 part /
└─sda4   8:4    0 389,1G  0 part /home
sr0     11:0    1  1024M  0 rom  

通常、usbデバイスはsdb上にあるため、lsblksdbはすべてのusbデバイスを提供する必要があります。

0
vfbsilva