Tab-завершение шаблонов оболочки

На моих серверах Debian я использую для того, чтобы нажимать Tab на «предварительный просмотр» расширения шаблонов оболочки:

$ cp *some*<Tab>
something  somewhat  have-some-cake
$ cp *some*_

Когда шаблон расширяется до одной записи, Tab заменяет шаблон фактической записью ; в противном случае он отображает список совпадающих записей. Это интуитивно понятное и полезное, потому что оно согласуется с обычным заполнением вкладки «префикс».

Но мои серверы и настольные компьютеры Ubuntu ведут себя по-другому: даже когда он будет расширяться до более чем одной записи, Tab заменяет шаблон на первая запись.

Я проверил обычных подозреваемых (/etc/bash.bashrc, / etc / inputrc и локальные версии), и я не мог найти разницы.

Кто-нибудь знает, какие настройки контролируют это поведение?

1
задан 7 December 2016 в 20:25

1 ответ

Завершение умной вкладки в Bash требует пакета bash-completion.

sudo apt install bash-completion

Bash Completion фактически написана и поддерживается Debian напрямую. (См. Также его пакет Debian и страницы пакета Ubuntu.)

Как только он установлен, он либо загружается автоматически (например, через /etc/bash.bashrc), либо вам нужно указать Bash, чтобы загрузить его в [ f5] с такой строкой:

if [[ -z "$BASH_COMPLETION" ]] && [[ -r /etc/bash_completion ]]; then
  . /etc/bash_completion
fi

До того, как Red Hat и другие включили этот пакет, я вручную копировал /etc/bash_completion* между системами. Это будет хорошо работать, но я не предлагаю; он также сокращает возможность для вашего менеджера пакетов обновлять существующие доработки и устанавливать новые (которые теперь входят в /usr/share/bash-completion/completions/, хотя они изначально жили с вашими пользовательскими дополнениями в /etc/bash_completion.d/).

0
ответ дан 23 May 2018 в 03:33

Другие вопросы по тегам:

Похожие вопросы: