2016-10-14 4 views
0

Обычно вы взаимодействуете с завершением bash, нажимая клавишу tab в своем терминале. Я хотел бы взаимодействовать с ним в моем сценарии. По сути, я хотел бы, чтобы функция/команда отвечала на вопрос «Если бы я нажал tab с уже введенным текстом xyz и курсором в качестве позиции n, какими были бы предложения?»Завершение доступа к bash с помощью скрипта

Имеет ли эта функция? Я нашел compgen, но он плохо документирован и, похоже, не делает того, что я хочу.

ответ

0

compgen похоже, именно то, что вы хотели бы использовать в любом случае. Для того, чтобы показать то, что случилось бы, если бы вводить com и нажав клавишу TAB, используйте:

compgen -c com 

Или:

выхода
compgen -A command com 

Это будет все Баш встроенных команд наряду с внешними двоичными файлами и скриптами, найденных из PATH.

Дополнительную информацию можно получить у the documentation, если вы хотите, например, вырезать из вывода compgen все встроенные встроенные башки и отображать только внешние двоичные файлы/скрипты.

+1

Это не работает. Если я набираю 'git sta ', я получаю 3 предложения: 'stage',' stash' и 'status'. Но если я запустил 'compgen -c 'git sta'', я не получил никаких предложений. – Drew

+0

Ну, это не завершение Bash, выполняющее завершение для подкоманд git, поэтому оно никогда не будет работать, так как вы хотите, чтобы он работал. Однако compgen * does * производит для вас то, что Bash будет производить. –

+0

Что делает завершение для подкоманд git? – Drew

Смежные вопросы