Получить дерево USB-устройств без lsusb

#compdef foo
local ret=1
_arguments \
  '1:first:(a b c)' \
  '*:files:_files' \
  && ret=0
return $ret

завершаетabили cдля меня, а затем тестирует как минимум два файла. Изменение обработчика первого аргумента

  '1: :($(print -l a b c))' \

у меня тоже работает. Если у вас есть пробелы в выводе того, что делает ваша программа, это будет проблемой для завершения первого аргумента, но не нарушит завершение последующих файлов для меня:

  '1: :($(< ~/tmp/opts))' \

, а затем:

 % print -l "a b" c d > ~/tmp/opts
 % rm ~/.zcompdump
 % exec zsh -l
 % foo
 a  b  c  d

он представляет aили b, а неa b:обычно вместо этого можно увидеть такие вещи, как ${(f)"$(...)"}, для разделения только на новые строки, cd $fpath[-1]обычно ZSH предоставляет скрипты завершения для изучения.

Но я не могу воспроизвести утверждение «не работает завершение файлов»; возможно с полным скриптом завершения и подходящим выходом из программы?

Обратите внимание на команды rm ~/.zcompdump ; exec zsh -l, которые удаляют кеш завершения и запускают новый экземпляр ZSH. Менее навязчивой альтернативой может быть конкретная выгрузка по конкретному имени команды:

function zbouncecompdef { unfunction _$1; autoload -U _$1; }
0
24.08.2020, 11:20
1 ответ

Возврат из числовой кодировки дерева устройств. Например, моя веб-камера находится в /sys/bus/usb/devices/3-1.1.2, что означает, что она находится на шине 3, порту 1 корневого концентратора этой шины, порту 1 концентратора ниже корневого концентратора и порту другого концентратора последнего.

Или сlsusb -t:

$ lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
        |__ Port 1: Dev 102, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 2: Dev 103, If 2, Class=Audio, Driver=snd-usb-audio, 480M
            |__ Port 2: Dev 103, If 0, Class=Video, Driver=uvcvideo, 480M
            |__ Port 2: Dev 103, If 3, Class=Audio, Driver=snd-usb-audio, 480M
            |__ Port 2: Dev 103, If 1, Class=Video, Driver=uvcvideo, 480M

Таким образом, ваш 3-1будет на порту 1 корневого концентратора шины 3.

1
18.03.2021, 23:10

Теги

Похожие вопросы