Существует несколько способов обращения к заданию в оболочке. Символ % вводит спецификацию задания (jobspec). Номер задания n можно обозначить как %n. На задание также можно ссылаться, используя префикс имени, используемого для его запуска, или подстроку, которая появляется в его командной строке. Простое именование задания может использоваться для вывода его на передний план: %1 - это синоним для ''fg %1'', выводящий задание 1 из фонового режима на передний план. Аналогично, ''%1 &'' возобновляет выполнение задания 1 в фоновом режиме, что эквивалентно ''bg %1''.
Поскольку мы говорим об USB-устройствах и предполагаем, что у вас есть udev, вы можете настроить некоторые правила udev.
Я предполагаю, и это всего лишь дикая догадка, что кто-то или что-то отключило/удалило устройство и снова подключило/добавило устройство, что увеличивает число.
Теперь сначала вам нужны поставщик и идентификатор продукта:
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 011: ID 0403:6001 FTDI FT232 USB-Serial (UART) IC
Далее вам потребуется серийный номер (, если у вас несколько):
# udevadm info -a -n /dev/ttyUSB1 | grep '{serial}' | head -n1
ATTRS{serial}=="A6008isP"
Теперь давайте создадим правило udev:
Правила UDEV обычно разбросаны по множеству файлов в /etc/udev/rules.d
. Создайте новый файл с именем 99-usb-serial.rules
и поместите туда следующую строку: у меня есть три устройства, каждое с другим серийным номером:
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A6008isP", SYMLINK+="MySerialDevice"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A7004IXj", SYMLINK+="MyOtherSerialDevice"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTDIF46B", SYMLINK+="YetAnotherSerialDevice"
ls -l /dev/MySerialDevice
lrwxrwxrwx 1 root root 7 Nov 25 22:12 /dev/MySerialDevice -> ttyUSB1
Если вам не нужен серийный номер, любое устройство от поставщика с таким же чипом получит одинаковую символическую ссылку, только одно из них может быть подключено в любой момент времени.
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="MySerialDevice"
Правила UDEV — хорошая идея но многие устройства не серийные или имеет тот же серийный номер и это не решает проблему от ttyACM0 до ttyACM1
Попробуйте
systemctl stop ModemManager systemctl disable ModemManager
П.С. Я не волшебник, я только учусь, но дружба помогает нам творить настоящие чудеса