На моих серверах Debian я привык поражать Вкладку, чтобы "предварительно просмотреть" расширение шаблонов оболочки:
$ cp *some*<Tab>
something somewhat have-some-cake
$ cp *some*_
Когда шаблон расширяется до одной записи, Вкладка заменяет шаблон фактической записью; иначе это показывает список соответствия записям. Это интуитивно и полезно, потому что это согласовывается с регулярным заполнением клавишей Tab "префикса".
Но мои серверы Ubuntu и рабочие столы ведут себя по-другому: даже когда это расширилось бы больше чем до одной записи, Вкладка заменяет шаблон первой записью.
Я проверил обычных подозреваемых (/etc/bash.bashrc,/etc/inputrc, и локальные версии), и я не мог найти различие.
Кто-либо знает который, устанавливая средства управления это поведение?
Обратное другой ответ, этой конкретной проблемой является, вероятно, прямой результат использования завершения удара. Пакет завершения удара имеет несколько ошибок (как отмечено в этом ответе U&L о подобной проблеме, например).
Если я комментирую этот раздел в моем .bashrc
:
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
и запустите новый экземпляр удара, затем я добираюсь:
$ echo *o*<tab><tab>
foo food foo.sh
$ echo *o*
И затем если я получаю /usr/share/bash-completion/bash_completion
сценарий как он был в .bashrc
:
$ . /usr/share/bash-completion/bash_completion
$ echo foo
*o*
был сразу автоматически заполнен к foo
не показывая другие соответствия.
Я использую 16.04, между прочим. Я не знаю, было ли это зафиксировано в более новых выпусках.
$ dpkg-query --show --showformat='${Package} ${version}\n' bash bash-completion
bash 4.3-14ubuntu1.2
bash-completion 1:2.1-4.2ubuntu1.1
Более умное заполнение клавишей Tab в Bash требует bash-completion
пакет.
sudo apt install bash-completion
Завершение Bash на самом деле пишется и сохраняется Debian непосредственно.
(См. также его пакет Debian и страницы пакета Ubuntu.)
После того как это установлено, это любой загружается автоматически (например, через /etc/bash.bashrc
) или иначе необходимо будет дать Bash команду загружать его в Вашем ~/.bashrc
со строкой файла конфигурации как это:
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/
).