На моих серверах Debian я использую для того, чтобы нажимать Tab на «предварительный просмотр» расширения шаблонов оболочки:
$ cp *some*<Tab>
something somewhat have-some-cake
$ cp *some*_
Когда шаблон расширяется до одной записи, Tab заменяет шаблон фактической записью ; в противном случае он отображает список совпадающих записей. Это интуитивно понятное и полезное, потому что оно согласуется с обычным заполнением вкладки «префикс».
Но мои серверы и настольные компьютеры Ubuntu ведут себя по-другому: даже когда он будет расширяться до более чем одной записи, Tab заменяет шаблон на первая запись.
Я проверил обычных подозреваемых (/etc/bash.bashrc, / etc / inputrc и локальные версии), и я не мог найти разницы.
Кто-нибудь знает, какие настройки контролируют это поведение?
Завершение умной вкладки в 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/).