मैं काफी निश्चित नहीं हूं कि आप क्या पूछ रहे हैं। आप कई बार 'पोर्ट' का उल्लेख करते हैं, लेकिन फिर आपके उदाहरण में, आप कहते हैं कि उत्तर है /dev/ttyUSB0, जो एक डिवाइस देव पथ है, पोर्ट नहीं। तो यह उत्तर प्रत्येक डिवाइस के लिए देव पथ को खोजने के बारे में है।
नीचे एक त्वरित और गंदी स्क्रिप्ट है जो /sysएक ID_SERIALविशेषता के साथ यूएसबी उपकरणों की तलाश में उपकरणों के माध्यम से चलता है । आमतौर पर केवल वास्तविक यूएसबी उपकरणों में यह विशेषता होगी, और इसलिए हम इसके साथ फ़िल्टर कर सकते हैं। यदि हम नहीं करते हैं, तो आप सूची में बहुत सारी चीजें देखेंगे जो भौतिक उपकरण नहीं हैं।
#!/bin/bash
for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev); do
(
syspath="${sysdevpath%/dev}"
devname="$(udevadm info -q name -p $syspath)"
[[ "$devname" == "bus/"* ]] && continue
eval "$(udevadm info -q property --export -p $syspath)"
[[ -z "$ID_SERIAL" ]] && continue
echo "/dev/$devname - $ID_SERIAL"
)
done
मेरे सिस्टम पर, इसके परिणाम निम्नलिखित हैं:
/dev/ttyACM0 - LG_Electronics_Inc._LGE_Android_Phone_VS930_4G-991c470
/dev/sdb - Lexar_USB_Flash_Drive_AA26MYU15PJ5QFCL-0:0
/dev/sdb1 - Lexar_USB_Flash_Drive_AA26MYU15PJ5QFCL-0:0
/dev/input/event5 - Logitech_USB_Receiver
/dev/input/mouse1 - Logitech_USB_Receiver
/dev/input/event2 - Razer_Razer_Diamondback_3G
/dev/input/mouse0 - Razer_Razer_Diamondback_3G
/dev/input/event3 - Logitech_HID_compliant_keyboard
/dev/input/event4 - Logitech_HID_compliant_keyboard
स्पष्टीकरण:
find /sys/bus/usb/devices/usb*/ -name dev
डिवाइस जो दिखाते हैं उनकी निर्देशिका में /devएक devफ़ाइल है /sys। इसलिए हम इस मापदंड से मेल खाते निर्देशिकाओं की खोज करते हैं।
syspath="${sysdevpath%/dev}"
हम निर्देशिका पथ चाहते हैं, इसलिए हम पट्टी करते हैं /dev।
devname="$(udevadm info -q name -p $syspath)"
यह हमें /devइस /sysउपकरण से मेल खाता है।
[[ "$devname" == "bus/"* ]] && continue
यह उन चीजों को फ़िल्टर करता है जो वास्तविक उपकरण नहीं हैं। अन्यथा आपको USB नियंत्रक और हब जैसी चीजें मिलेंगी।
eval "$(udevadm info -q property --export -p $syspath)"
udevadm info -q property --exportआदेश सूचियों एक प्रारूप में सभी डिवाइस गुण है कि चर में खोल से पार्स किया जा सकता। तो हम बस evalइस पर कॉल करते हैं। यही कारण है कि हम कोष्ठक में कोड लपेटते हैं, ताकि हम एक उपधारा का उपयोग करें, और चर प्रत्येक लूप पर मिटा दिए जाएं।
[[ -z "$ID_SERIAL" ]] && continue
उन चीजों को अधिक फ़िल्टर करना जो वास्तविक उपकरण नहीं हैं।
echo "/dev/$devname - $ID_SERIAL"
मुझे आशा है कि आपको पता है कि यह रेखा क्या करती है :-)
/devको किसी प्रविष्टि के साथ जोड़ना चाहते हैंlsusb? या क्या आप उन सभी उपकरणों को सूचीबद्ध करना चाहते/devहैं जो भौतिक USB डिवाइस से प्राप्त किए गए हैं? या आप बस चाह रहे हैंls /dev/ttyUSB*?