Как указать автодополнение bash для каталогов и файлов определенных расширений для команды?

Не повторять кейген. Это восстановит ключ и прервет доступ к серверу А.

Сначала создайте кейген, затем запустите команду копирования id на все серверы, и все готово.

В общем, запускайте кейген только один раз:

  1. Запустить генератор ключей ssh ​​
  2. Запустите ssh для копирования идентификатора на сервер
  3. Запустите ssh, скопируйте идентификатор на сервер b
  4. Запустите ssh и скопируйте идентификатор на сервер c. И так далее:)
2
08.02.2020, 07:48
1 ответ

просто добавьте-o plusdirsавтоматическое -действие завершения к команде, чтобы автоматическое -завершение попыталось добавить имя каталога к предыдущему результату (игнорируя соответствие шаблону)

complete -f -o plusdirs -X '!*.@(mp4|mkv)' play
  • !отрицать завершение, что означает, что автоматическое -соревнование будет игнорировать результат завершения, отличный от указанного нами совпадающего шаблона *.@(mp4|mkv);

  • @указание автоматического -завершения для соответствия хотя бы одному из заданных шаблонов; @(pattern-list)известен как Bash's Extended Glob. здесь мы также можем использовать *.+(pattern-list)glob.

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

complete -d -X '!*@(mp4|mkv)' -f -X '!*.@(mp4|mkv)' play

ниже тоже должно работать:

complete -d -f -X '!*.@(mp4|mkv)' play
1
28.04.2021, 23:24

Теги

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