Когда я использую программу как svn
и я набираю в Gnome Terminal:
svn upd
и нажмите Tabэто автозаполнение до:
svn update
Возможно ли сделать что-то подобное в моем собственном скрипте bash?
bash
auto-completion
UAdapter
источник
источник
Ответы:
Вы можете использовать Программируемое завершение . Посмотрите на
/etc/bash_completion
и/etc/bash_completion.d/*
для некоторых примеров.источник
/usr/share/bash-completion/completions/<program>
The provided link has that already
- это может сегодня, но не завтра. Или в следующем году. Или через десять лет. Что бы вы ни предлагали по поводу актуальности документации, Stack Overflow не рекомендует ответы только по ссылкам по этим причинам.Я опоздал на шесть месяцев, но я искал то же самое и нашел это:
Вам нужно будет создать новый файл:
Для статического автозавершения (
--help
/--verbose
, например) добавить следующее:COMP_WORDS
массив, содержащий все отдельные слова в текущей командной строкеCOMP_CWORD
является индексом слова, содержащего текущую позицию курсора.COMPREPLY
переменная массива, из которой Bash читает возможные дополнения.И
compgen
команда возвращает массив элементов--help
,--verbose
и--version
соответствие текущего слова"${cur}"
:Источник: http://www.debian-administration.org/articles/316
источник
-
и показать им , без необходимости начать вводить целевое слово, просто удалитеif [...] then
иfi
линию./etc/bash_completion.d/
. Я пришел сюда только потому, что хотел где-то опубликовать ответ, но оказалось, что кто-то был на три года впереди :) Ясный, лаконичный и полный пример, спасибо!Все дополнения bash хранятся в
/etc/bash_completion.d/
. Поэтому, если вы создаете программное обеспечение с помощью bash_completion, было бы целесообразно, чтобы deb / make install удалил файл с именем программного обеспечения в этом каталоге. Вот пример сценария завершения bash для Rsync:Вероятно, стоило бы рассмотреть один из файлов завершения bash, который наиболее точно соответствует вашей программе. Одним из самых простых примеров является
rrdtool
файл.источник
source ~/.local/mycrazycompletion
в~/.bashrc
pkg-c
onfig --variable = завершенийdir bash-завершением`, и этот каталог является рекомендацией, приведенной выше в разделе часто задаваемых вопросов о дополнениях Bash.Вот полный учебник.
Давайте рассмотрим пример скрипта с именем admin.sh, к которому вы бы хотели, чтобы работало автозаполнение.
Примечание вариант списка. Вызов скрипта с этой опцией распечатает все возможные опции для этого скрипта.
И вот у вас есть скрипт автозаполнения:
Обратите внимание, что последний аргумент для завершения - это имя скрипта, к которому вы хотите добавить автозаполнение. Все, что вам нужно сделать, это добавить свой скрипт автозаполнения в bashrc как
или скопируйте его в /etc/bash.completion.d
источник
prev
нужна переменная? Вы, кажется, не используете это.-o nospace
опция?Если все, что вам нужно, это простое автозаполнение на основе слов (то есть без завершения подкоманды или чего-либо еще),
complete
команда имеет-W
параметр, который просто делает правильные вещи.Например, у меня есть следующие строки
.bashrc
для автозаполнения программы под названием jupyter :Теперь
jupyter <TAB> <TAB>
автозаполнение для меня.В документах на gnu.org полезны.
Кажется, он полагается на
IFS
правильную установку переменной, но это не вызвало у меня никаких проблем.Чтобы добавить завершение имени файла и завершение BASH по умолчанию, используйте
-o
параметр:Чтобы использовать это в zsh, добавьте следующий код перед запуском
complete
команды в вашем~/.zshrc
:источник
bash jupyter <TAB><TAB>
?