ฉันต้องการแสดงรายการอุปกรณ์ที่เชื่อมต่อผ่าน usb เท่านั้น
ปัญหาคือว่า Ubuntu ดูเหมือนจะเห็นไดรฟ์หัวแม่มือเป็นแบบถอดได้ (ใน/sys/block/*/removable
) แต่ไม่เห็นฮาร์ดไดรฟ์ภายนอกแบบเดียวกัน
นี่เป็นอะไรที่เฉพาะเจาะจงกว่าวิธีการตรวจหาอุปกรณ์ USB?
ฉันต้องการแสดงรายการอุปกรณ์ที่เชื่อมต่อผ่าน usb เท่านั้น
ปัญหาคือว่า Ubuntu ดูเหมือนจะเห็นไดรฟ์หัวแม่มือเป็นแบบถอดได้ (ใน/sys/block/*/removable
) แต่ไม่เห็นฮาร์ดไดรฟ์ภายนอกแบบเดียวกัน
นี่เป็นอะไรที่เฉพาะเจาะจงกว่าวิธีการตรวจหาอุปกรณ์ USB?
คำตอบ:
หากคุณกำลังมองหาดิสก์ที่ติดตั้งอยู่
df
จะแสดงรายการเหล่านั้นพร้อมกับดิสก์อื่น ๆ ทั้งหมดของคุณพร้อมกับข้อมูลที่มีประโยชน์
ฉันขอแนะนำให้ตรวจสอบคุณสมบัติ udev ของอุปกรณ์โดยเฉพาะID_BUS
คุณสมบัติ:
for device in /sys/block/*
do
if udevadm info --query=property --path=$device | grep -q ^ID_BUS=usb
then
echo $device
fi
done
ฉันคิด
lsusb
จะให้สิ่งที่คุณต้องการอย่างน้อยถ้าฉันเข้าใจสิ่งที่คุณถาม (แน่นอนว่ามันแสดงรายการอุปกรณ์ usb ทั้งหมดไม่ใช่แค่ที่จัดเก็บข้อมูล)
แก้ไข: เมื่อฉันมีเวลาฉันจะกลับมายังโพสต์นี้เพื่อให้รายการเป็นอุปกรณ์ USB เท่านั้น สำหรับตอนนี้มันแสดงรายการอุปกรณ์ทั้งหมดที่ติดตั้ง/media
ซึ่งอาจดีพอสำหรับบางคน
/media
คำตอบอื่น ๆ ทั้งหมดที่นี่ดูเหมือนจะล้มเหลวในการกรองอุปกรณ์ที่ไม่ใช่ USB หรืออุปกรณ์ USB ที่ไม่ใช่ที่จัดเก็บข้อมูล นี่คือคำสั่งที่ควรแสดงรายการเฉพาะอุปกรณ์เก็บข้อมูลที่ต่อผ่าน USB ข้อยกเว้นอย่างหนึ่งซึ่งไม่น่าจะมีความสำคัญสำหรับทุกคนนั่นคือจะไม่แสดงออปติคัลไดรฟ์ USB ที่เชื่อมต่อกับสื่อที่เชื่อมต่อ
ข้อกำหนดสำหรับสิ่งนี้ในการทำงาน
/media
ไดเรกทอรี หากอุปกรณ์ USB ของคุณได้รับการกำหนดค่าใน fstab เพื่อติดตั้งที่อื่นคุณจะต้องปรับแต่งคำสั่งต่อไปนี้การแสดงรายการอุปกรณ์เก็บข้อมูล USB
ในกรณีของฉันสำหรับสคริปต์ที่ฉันกำลังเขียน นี่คือสองคำสั่ง หนึ่งจะแสดงรายการพาร์ติชันของอุปกรณ์ที่เชื่อมต่อและอื่น ๆ จะแสดงรายการอุปกรณ์
รายชื่อพาร์ทิชัน:
lsblk | grep /media | grep -oP "sd[a-z][0-9]?" | awk '{print "/dev/"$1}'
ตัวอย่างผลลัพธ์:
/dev/sdd1
/dev/sdi1
/dev/sdj1
/dev/sdj2
รายชื่ออุปกรณ์:
lsblk | grep /media | grep -oP "sd[a-z]" | awk '{print "/dev/"$1}' | sort | uniq
ตัวอย่างผลลัพธ์:
/dev/sdd
/dev/sdi
/dev/sdj
/media
อะไรบ้าง?