Як інструменти командного рядка мають власний список автозаповнення?


24

Як Bash в Ubuntu знає певний перелік дій інструменту?

Наприклад, якщо я два рази набираю apt-get і tab, я бачу лише видалення, оновлення, оновлення ... тощо, але не дії для іншої команди чи файлів у поточному каталозі.

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


1
Я видалив "ubuntu" з вашої назви та тегів, оскільки це краще, як більш загальне питання (відповідь не характерна для будь-якого дистрибутива).
goldilocks

1
Прекрасне запитання, я часто замислювався над цим, але ніколи не забирав часу, щоб його переглянути.
акатакрітос

Відповіді:


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.