Программируемое завершение Bash работает путем анализа командной строки и выяснения того, что завершается:
- Некоторые контексты обрабатываются особым образом, например, первое слово в команде завершается как имя команды, последующее a
$
завершается как имя переменной и т. Д.
- Вне этих контекстов bash пытается завершить аргумент команды, и применяются параметры команды или сбой (что обычно имеет место) для базового имени команды.
Например, после , bash завершает имена команд, начинающиеся с . После bash завершает имена переменных, которые начинаются с . После bash применяет правила завершения для команды . Правила завершения могут указывать категорию (пользователь, переменную, файлы и т. Д.), Шаблон подстановочного знака для имен файлов или функцию или фрагмент кода для выполнения.sqllTab
sqll
sqlldr $aTab
a
sqlldr Tab
sqlldr
Правила завершения определяются complete
встроенным. Bash не отслеживает, когда complete
был вызван встроенный модуль или в каком скрипте (если он есть) он был. В большинстве дистрибутивов поставляется пакет завершения bash , который предоставляет ряд правил для общих команд. Это принимает форму ряда файлов сценариев, которые содержат вызовы complete
, со сценарием, который должен быть прочитан .bashrc
(или /etc/bash.bashrc
реализован) для загрузки всех этих сценариев: обычно . /etc/bash_completion
требуется для активации программируемого завершения и загрузки доступных сценариев.
Стандартный пакет не включает поддержку sqlldr
. Если у вас есть такая поддержка, она должна исходить из другого источника. Этот источник , возможно, уронил файл в каталоге , как /etc/bash_completion.d
и мог бы прийти с инструкциями , чтобы включить некоторый код в вашем .bashrc
. Вы можете использовать, complete -p sqlldr
чтобы увидеть текущие правила для sqlldr
; как упоминалось ранее, это не скажет вам, откуда были загружены эти правила.
Tcsh, zsh и fish имеют несколько схожих механизмов (все черпали вдохновение в tcsh), но имеют различные встроенные функции, синтаксис и возможности.
/etc/bash_completion.d
. Посмотрите также/etc/bash_completion
и посмотритеset
, насколько выросла ваша среда.