Как автозаполнение TAB находит варианты выполнения?


Ответы:


22

В зависимости от команды:

  • Кто-то, возможно, написал функцию для генерации возможных дополнений аргументов, включая опции. Вы найдете функции для некоторых команд в /etc/bash_completion.d/*(или в другом месте в некоторых системах). Эти функции регистрируются встроенным (например, говорит bash вызвать функцию, когда вы нажимаете на команду). Они используют встроенную функцию, чтобы сказать bash «вот возможные дополнения».complete complete -F _find find_findTabfindcompgen
  • Для некоторых команд bash вызовет команду с аргументом --helpи проанализирует вывод. Такие команды могут быть зарегистрированы с помощью completeвстроенного, например,complete -F _longopt ls . _longoptна самом деле это функция генерации завершения, которая обрабатывает выходные данные команды, а не использует фиксированный список. (Существуют другие более специализированные функции завершения, которые анализируют выходные данные команды для генерации возможных завершений; ищите /etc/bash_completion.d/*примеры.)
  • Для таких вещей, как псевдонимы, функция завершения ищет их во внутренних таблицах bash. completeВстроенный имеет варианты , которые, например , -Aдля псевдонимов.

10

Посмотрите на файл

/ И т.д. / bash_completion

и понаблюдайте за файлами из каталога:

/etc/bash_completion.d

Вы найдете ответ.


2

Поддержка завершения bash предоставляется в Debian и Ubuntu пакетом завершения bash . Обычно вам также нужно раскомментировать следующее /etc/bash.bashrcи / или .bashrcполучить исходные файлы bash. Следующее от /etc/bash.bashrc:

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

чтобы это работало. Я обычно раскомментирую это в обоих. Обработка интерактивных оболочек / оболочек входа в систему в Debian - это немного беспорядок.

Подобные комментарии предположительно применимы к другим дистрибутивам, хотя, возможно, по умолчанию они включают источники.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.