ฉันจะแสดงรายการอุปกรณ์เก็บข้อมูลทั้งหมด (หัวแม่มือไดรฟ์ / ฮาร์ดไดรฟ์ภายนอก) ที่เชื่อมต่อผ่าน USB จากบรรทัดคำสั่งได้อย่างไร


18

ฉันต้องการแสดงรายการอุปกรณ์ที่เชื่อมต่อผ่าน usb เท่านั้น

ปัญหาคือว่า Ubuntu ดูเหมือนจะเห็นไดรฟ์หัวแม่มือเป็นแบบถอดได้ (ใน/sys/block/*/removable) แต่ไม่เห็นฮาร์ดไดรฟ์ภายนอกแบบเดียวกัน

นี่เป็นอะไรที่เฉพาะเจาะจงกว่าวิธีการตรวจหาอุปกรณ์ USB?

คำตอบ:


14

หากคุณกำลังมองหาดิสก์ที่ติดตั้งอยู่

df

จะแสดงรายการเหล่านั้นพร้อมกับดิสก์อื่น ๆ ทั้งหมดของคุณพร้อมกับข้อมูลที่มีประโยชน์


2
แต่สิ่งนี้จะช่วยให้อุปกรณ์บล็อกทั้งหมดไม่ใช่แค่อุปกรณ์ที่ต่อผ่าน USB
Jeremy Kerr

9

ฉันขอแนะนำให้ตรวจสอบคุณสมบัติ 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

สิ่งนี้แยกอุปกรณ์สำหรับเครื่องอ่านการ์ดในตัวของฉันเช่นกันแม้ว่าจะไม่มีการ์ดเสียบอยู่ก็ตาม
b_laoshi

@b_laoshi: อ๋อพวกนั้นจะยังคงรายงานว่าเป็นอุปกรณ์จัดเก็บข้อมูล แต่ไม่มีสื่ออยู่
Jeremy Kerr

2

ฉันคิด

lsusb

จะให้สิ่งที่คุณต้องการอย่างน้อยถ้าฉันเข้าใจสิ่งที่คุณถาม (แน่นอนว่ามันแสดงรายการอุปกรณ์ usb ทั้งหมดไม่ใช่แค่ที่จัดเก็บข้อมูล)


2

รายการเท่านั้นอุปกรณ์เก็บข้อมูล USB ที่แนบมา

แก้ไข: เมื่อฉันมีเวลาฉันจะกลับมายังโพสต์นี้เพื่อให้รายการเป็นอุปกรณ์ USB เท่านั้น สำหรับตอนนี้มันแสดงรายการอุปกรณ์ทั้งหมดที่ติดตั้ง/mediaซึ่งอาจดีพอสำหรับบางคน

รายการอุปกรณ์ทั้งหมดที่ติดตั้งใน /media

คำตอบอื่น ๆ ทั้งหมดที่นี่ดูเหมือนจะล้มเหลวในการกรองอุปกรณ์ที่ไม่ใช่ USB หรืออุปกรณ์ USB ที่ไม่ใช่ที่จัดเก็บข้อมูล นี่คือคำสั่งที่ควรแสดงรายการเฉพาะอุปกรณ์เก็บข้อมูลที่ต่อผ่าน USB ข้อยกเว้นอย่างหนึ่งซึ่งไม่น่าจะมีความสำคัญสำหรับทุกคนนั่นคือจะไม่แสดงออปติคัลไดรฟ์ USB ที่เชื่อมต่อกับสื่อที่เชื่อมต่อ

ข้อกำหนดสำหรับสิ่งนี้ในการทำงาน

  • ต้องติดตั้งอุปกรณ์ USB โดยปกติแล้วระบบปฏิบัติการ Ubuntu บนเดสก์ท็อปจะติดตั้งอัตโนมัติตามค่าเริ่มต้น
  • สื่อจะต้องติดตั้งใน/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อะไรบ้าง?
muru

นั่นจะนำเสนอปัญหา แต่สิ่งหนึ่งที่ไม่น่าจะส่งผลกระทบต่อผู้ใช้ส่วนใหญ่ ฉันจะให้ความคิดและอัปเดตในภายหลัง
b_laoshi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.