나는 당신이 무엇을 요구하는지 잘 모르겠습니다. 'port'를 여러 번 언급했지만 예제에서 대답은 /dev/ttyUSB0
포트가 아니라 장치 dev 경로 라고 말합니다 . 따라서이 답변은 각 장치의 개발 경로를 찾는 것입니다.
아래는 속성 /sys
이있는 USB 장치를 찾는 장치를 안내하는 빠르고 더러운 스크립트입니다 ID_SERIAL
. 일반적으로 실제 USB 장치 만이 속성을 가지므로 필터링 할 수 있습니다. 그렇지 않으면 목록에 실제 장치가 아닌 많은 것들이 표시됩니다.
#!/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*
거야?