У меня есть пользовательская консольная утилита cooltool
со списком опций
fooOption
barOption
Что я должен сделать, чтобы bash мог завершить автозаполнение, нажав tab
клавишу?
Я имею в виду пользователь набрал
$ ./cooltool foo_
затем нажал tab
. А потом
$ ./cooltool fooOption _
появившийся.
Ответы:
Напишите скрипт завершения bash для
cooltool
. Пакет bash- creation поставляется со сценариями для многих популярных программ, которые вы можете использовать в качестве примеров.источник
Самый простой способ - добавить следующее в ваш .bashrc.
Всякий раз, когда вы печатаете
cooltool f[TAB][TAB]
,_cooltool()
вызывается функция. Он определит ваше текущее частичное слово, а затемcompgen
определит, какие варианты соответствуют. Они хранятся в массиве с именем,COMPREPLY
который затем отображается. Посмотрите наman complete
иman compgen
для деталей.Для хорошего учебника проверьте: Написание вашей собственной функции завершения Bash
источник
Возможно, вы захотите поближе взглянуть на каталог /etc/bash_completion.d в вашей системе.
Также вы должны прочитать это введение . Вторая часть введения является один вам нужно.
источник
Вот код, который используется для завершения git bash
источник
В дополнение к ответу на собачьи упущения вы также можете сделать:
если вы просто хотите сопоставить список слов с начала строки. Кажется, что полный и компенг разделяют большинство вариантов. Я заметил только соответствие «начало строки» в командах, которые я использую, поэтому я обнаружил, что вы можете делать другие вещи в функции _cooltool, например:
совпадать в любом месте в имени опции.
источник