При подключении переходников USB-UART они именуются /dev/ttyUSB0, /dev/ttyACM50 и т.д. Хотелось бы дать им более осмысленные имена. Для этого написал правило udev’а:
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", PROGRAM="/bin/bash -c \"ls /dev | grep tty_ft232r_ | wc -l \"", SYMLINK+="tty_ft232r_%c"
Потом подключаю свое самодельное устройство, которое выглядит как сдвоенный переходник, причем назначения у «частей» переходника разные и описываются именем интерфейса. Это тоже решаемо:
SUBSYSTEM=="tty", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df" ENV{CONNECTED_vusb}="yes"
ENV{CONNECTED_vusb}=="yes", SUBSYSTEM=="tty", ATTRS{interface}=="term_cdc", PROGRAM="/bin/bash -c \"ls /dev | grep tty_TERM_CDC_ | wc -l \"", SYMLINK+="tty_TERM_CDC_%c"
ENV{CONNECTED_vusb}=="yes", SUBSYSTEM=="tty", ATTRS{interface}=="term", PROGRAM="/bin/bash -c \"ls /dev | grep tty_TERM_ | wc -l \"", SYMLINK+="tty_TERM_%c
Но мне не понравилось указывать имя симлинка в двух местах для каждого устройства: при подсчете количества и при собственно формировании симлинка. Интуитивно кажется, что должно быть решение.
Если у устройства уже есть атрибут ATTRS{interface} с нормальным текстовым описанием, нельзя ли его как-то подставить его в симлинк?