Попробуйте использовать этот скрипт Python . Он обрезает отдельные разделы имени пути, точно так, как вы хотели в своем вопросе. Он также использует многоточие в Юникоде, которое занимает только один столбец вместо трех.
Пример вывода для вашего пути (если задано ограничение в 30 символов):
/home/mydir…/second…/my_actua…
Стоит отметить, что это решение правильно обрабатывает Unicode в именах каталогов, используя wcswidth
. $ {# PWD}
, который использовали другие ответы, будет сильно неверно оценивать визуальную ширину любого пути, содержащего символы UTF-8.
Я не думаю, что это может работать таким образом. Во-первых, echo "0x012...
отправил буквальную строку символов ascii 0x12
, которая является лишь базовым -16 представлением фактических двоичных данных, необходимых для связи с устройством.
Взгляните на Python, возможно, (вы могли бы использовать множество других языков для этого, однако Python обычно является хорошим местом для начала )и взаимодействия с USB-устройствами. Может здесь:https://stackoverflow.com/questions/44290837/how-to-interact-with-usb-device-using-pyusb
Вы должны написать /dev/bus/usb/[vid:pid]
. vid
и pid
— цифры, написанные рядом с идентификатором. В вашем случае вы можете попробовать эту команду:
echo "0x12" >> /dev/bus/usb/001/2009:7638
SDK _DEMO использует COM-порт для подключения к сканеру отпечатков пальцев в Windows, а в руководстве указано, что ожидаемым способом является использование последовательного преобразователя USB -в -. Поскольку набор команд включает как CMD_GET_TEMPLATE
, так и CMD_ADD_TEMPLATE
, возможно, для чтения и записи шаблонов отпечатков пальцев в сканер соответственно, возможно, SDK _DEMO на самом деле реализовывал эмуляцию запоминающего устройства.
К изображению вашего lsusb
листинга (Кстати, пожалуйста, не добавляйте изображения текста; просто скопируйте и вставьте фактический текст, если это вообще возможно )устройство Bus 001 Device 008
, похоже, имеет идентификатор производителя и продукта USB 2009:7638
.
К сожалению, ID поставщика USB 2009
, по-видимому, относится к iStorage , а у этого поставщика известно лишь несколько идентификаторов флэш-накопителей.
С другой стороны, идентификаторы микросхем последовательного преобразователя USB -в -часто настраиваются, поскольку, когда такая микросхема используется как часть более крупного продукта, поставщик более крупного продукта хотел бы, чтобы он имеют свои собственные коды поставщиков и продуктов. Итак, сначала вы должны выяснить, действительно ли USB-устройство с идентификаторами 2009:7638
является последовательным преобразователем USB с пользовательским идентификатором или это что-то другое.
Для этого выполните команду lsusb -d 2009:7638 -v
, пока устройство подключено. Если выходные данные содержат такие строки, это определенно преобразователь последовательного порта USB -в -:
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 255 Vendor Specific Protocol
iInterface 2 USB Serial Converter
Но если устройство на самом деле предоставляет интерфейс USB Mass Storage, то вывод будет включать строку bDeviceClass
или bInterfaceClass
со значением 8 Mass Storage
. Если это так, то устройство также должно появиться в выводе lsblk
.
Если микросхема последовательного преобразователя USB -в -является продуктом FTDI (, как указано в руководстве, которое вы указали ), правильный модуль драйвера для него, вероятно, ftdi_sio
.Чтобы загрузить модуль и сообщить ему о пользовательских идентификаторах:
modprobe ftdi_sio
echo 2009 7638 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id
Та же стратегия может быть использована и с другими модулями последовательного драйвера USB с -по -; просто замените имя модуля в обеих командах.
Если вы не можете определить правильный модуль драйвера, запустите lsusb -d 2009:7638 -v > /tmp/usbserial-info.txt
и отредактируйте свой вопрос, добавив в него содержимое результирующего файла /tmp/usbserial-info.txt
.
Если последовательный драйвер USB с -по -распознает устройство, должен появиться узел устройства /dev/ttyUSB0
. Это устройство будет использоваться для связи со сканером отпечатков пальцев.
Устройства /dev/bus/usb/xxx/yyy
, такие как /dev/bus/usb/001/008
, которые вы пытались использовать, предназначены для использования с libusb
, поскольку они требуют, чтобы приложение, использующее узел устройства, знало о различных конечных точках USB и Режимы передачи USB . Одно USB-устройство будет иметь как минимум одну конечную точку управления и может иметь несколько интерфейсов , каждый из которых имеет несколько конечных точек.
Узлы устройства /dev/bus/usb/...
позволяют использовать полный набор функций USB, но из-за этого они не могут использоваться сценариями; в основном эти узлы устройств существуют для того, чтобы быть целью для определенных системных вызовов, а не просто для передачи данных в них и из них.