接続されているUSBフラッシュドライブのデバイス名を取得します。

接続されているUSBフラッシュドライブのデバイス名を取得します。

接続されているすべてのUSBディスクのデバイス名(つまり)を取得する必要がありますsdd

USBディスク3枚とSATAディスク2枚を挿入しました。

$ find /sys/devices/ -name block        
/sys/devices/pci0000:00/0000:00:14.0/usb3/3-7/3-7:1.0/host5/target5:0:0/5:0:0:0/block
/sys/devices/pci0000:00/0000:00:14.0/usb4/4-2/4-2:1.0/host6/target6:0:0/6:0:0:0/block
/sys/devices/pci0000:00/0000:00:14.0/usb4/4-5/4-5:1.0/host4/target4:0:0/4:0:0:0/block
/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block
/sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block

SATAディスクを無視したいが、すべてのUSBディスクを一覧表示する必要があります。

端末でこれを使用でき、ls次のものを提供しますsdd

$ ls /sys/devices/pci0000:00/0000:00:14.0/usb3/3-7/3-7:1.0/host5/target5:0:0/5:0:0:0/block
sdd

ただし、スクリプトで使用する必要があります。すべてのUSBディスクを繰り返す必要がありますが、正確なパスが事前にわからないため、ワイルドカード(*または?)を使用する必要があります。

for DISK in $(ls /sys/devices/pci0000:00/0000:00:14.0/usb?/*/*:1.0/host?/target?:0:0/?:0:0:0/block) ; do
echo /dev/$DISK
done

上記はUSBディスクが挿入されている場合にのみ機能します。複数のディスクを挿入すると、不要なパスも得られますsdd/sysつまり、

/dev//sys/devices/pci0000:00/0000:00:14.0/usb3/3-7/3-7:1.0/host5/target5:0:0/5:0:0:0/block:
/dev/sdd
/dev//sys/devices/pci0000:00/0000:00:14.0/usb4/4-2/4-2:1.0/host6/target6:0:0/6:0:0:0/block:
/dev/sde
/dev//sys/devices/pci0000:00/0000:00:14.0/usb4/4-5/4-5:1.0/host4/target4:0:0/4:0:0:0/block:
/dev/sdc

どのように一度だけ繰り返すことができますかsdd sde sdc

インフラストラクチャを使用しないソリューションを探していますudev/dev/disk/by-path/

ベストアンサー1

コマンドを使用してこれを実行できますlsblk

lsblk -l -o name,tran与えられた

NAME TRAN
sda  sata
sda1 
sdb  usb
sdc  usb
sr0  sata

-l「リスト」形式を表しているため、解析する方が簡単です。それ以外の場合は、次のツリー形式が得られます。

NAME   TRAN
sda    sata
└─sda1
sdb    usb
sr0    sata

別のフラグを指定すると、FSTYPE、LABEL、UUID、MOUNTPOINTなどの追加情報が提供されます。実行すると、lsblk --helpすべてのオプションを表示できます。

--paths --noheadings --scsi次のようにフラグを使用して出力を印刷できます。

sata   /dev/sda
usb    /dev/sdb
usb    /dev/sdc
sata   /dev/sr0

次に、grep入力を介して行の先頭にusbを使用してその行をフィルタリングします。

おすすめ記事