연결된 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를 사용하여 해당 라인을 필터링하십시오.

답변2

실행되면 lsusbUSB 버스를 통해 연결된 장치의 이름이 표시됩니다.

좋다:

$ lsusb
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 0421:0802 Nokia Mobile Phones CA-42 Phone Parent
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

당신은 또한 볼 수 있습니다사람들이 모여있다

설명하다

lsusb는 시스템의 USB 버스와 여기에 연결된 장치에 대한 정보를 표시하는 유틸리티입니다.

관련 정보