내 컴퓨터에 연결된 USB 저장 장치만 나열하고 싶습니다. 이것은 SCSI 디스크이기 때문에 lsscsi
USB 드라이브와 컴퓨터의 하드 드라이브 및 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 disk
SATA 솔리드 스테이트 드라이브/dev/sdb 0 sata disk
SATA 하드 드라이브/dev/sdd 1 usb disk
USB 플래시 드라이브/dev/sr0 1 sata rom
SATA 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 장치를 제공해야 합니다.