Как инструменты командной строки имеют свой собственный список автозаполнения?


24

Как Bash в Ubuntu узнает список действий инструмента?

Например, если я дважды наберу apt-get и tab, я вижу только удаление, обновление, обновление ... и т. Д., Но не действия для другой команды или файлов в текущем каталоге.

Я разрабатываю инструмент командной строки в Go и хотел бы предоставить эту функцию для дистрибутивов, которые его поддерживают.


1
Я удалил «ubuntu» из вашего заголовка и тегов, так как это лучше в качестве более общего вопроса (ответ не является специфическим для какого-либо дистрибутива).
Златовласка

1
Отличный вопрос, я часто задавался этим вопросом, но никогда не занимал время, чтобы найти его.
akatakritos

Ответы:


25

Это делается с помощью функций завершения bash v4. Код завершения для apt-getобеспечивается bash-completionпакетом и находится в /usr/share/bash-completion/completions/apt-get. Приложения, которые имеют завершение и не являются частью базового bash-completionпакета, помещают свои сценарии завершения в /etc/bash_completion.d.

Завершение загружается через поиск /etc/bash_completion. То, где это будет сделано, зависит от версии Debian или Ubuntu. Это, в свою очередь, будет источником всего /usr/share/bash-completion/completionsи /etc/bash_completion.d.


Спасибо, это все объясняет. Таким образом, реализация зависит не только от Debian до Ubuntu, но также и в каждой версии одного и того же дистрибутива?
Amged Rustom

1
@ Amgad Работает одинаково на всех дистрибутивах. Разница лишь в том, где находятся файлы, и, возможно, в некоторых настройках по умолчанию.
Жиль "ТАК - перестань быть злым"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.