コンピューターに接続されているUSBストレージデバイスのみを一覧表示したいと思います。これらはSCSIディスクであるため、コマンドlsscsi
を使用しました。このコマンドは、USBドライブと、コンピューターのハードドライブおよびCDドライブを一覧表示します。 USBではないメモリストレージを無視する方法はありますか? lsusb
も試しましたが、これにはキーボード、マウス、その他の非ストレージデバイスが含まれます。
この回答 接続されているすべてのブロックデバイスのリストをチェックし、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
私はちょうど関数を書きました:
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"
}
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デバイスを提供する必要があります。