USB 저장 장치만 나열하는 Linux 명령은 무엇입니까?

USB 저장 장치만 나열하는 Linux 명령은 무엇입니까?

내 컴퓨터에 연결된 USB 저장 장치만 나열하고 싶습니다. 이것은 SCSI 디스크이기 때문에 lsscsiUSB 드라이브와 컴퓨터의 하드 드라이브 및 CD 드라이브를 나열하는 명령을 사용했습니다 . USB가 아닌 메모리 저장 장치를 무시하는 방법이 있습니까? 나도 그것을 시도했지만 lsusb여기에는 키보드, 마우스 및 기타 비저장 장치가 포함됩니다.

답변1

이 답변연결된 모든 블록 장치 목록을 확인하고 반복하여 udevadmin각각의 ID_BUS.

에서 연결된 모든 블록 장치를 볼 수 있습니다 /sys/block. USB 저장 장치인지 알려 주는 연결된 답변의 bash 스크립트는 다음과 같습니다.

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

답변2

방금 함수를 작성했습니다.

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"
}

답변3

lsblk --noheadings --nodeps --paths --raw --output NAME,RM,TRAN,TYPE | grep " 1 usb disk$" | cut --delimiter " " --fields 1

출력 예:

/dev/sdd
/dev/sde
/dev/sdf

기본적으로 grep이동식 USB 디스크를 필터링할 수 있습니다. lsblk다양한 장치에서 필터링되지 않은 출력의 몇 가지 예:

  • /dev/loop0 0 loop
  • /dev/sda 0 sata diskSATA 솔리드 스테이트 드라이브
  • /dev/sdb 0 sata diskSATA 하드 드라이브
  • /dev/sdd 1 usb disk USB 플래시 드라이브
  • /dev/sr0 1 sata romSATA DVD-RW

답변4

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에 위치하므로 lsblk sdb는 모든 USB 장치를 제공해야 합니다.

관련 정보