
Usando bash
neste sistema:
Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u4 (29/02/2016) x86_64 GNU/Linux
A sequência:
cd /tmp
touch test1.txt && touch test2.txt && touch test3.txt
ls test [tab][tab]
Mostra:
test1.txt test2.txt test3.txt
abaixo da linha de comando.
É assim que espero que bash
o preenchimento automático se comporte.
Mas quando eu digito:
ls test* [tab][tab]
(esperando o mesmo resultado) eu só consigo (ou seja, o preenchimento automático se expande exclusivamente para):
test1.txt
Portanto, o curinga asterisco ( *
) no final torna test[23].txt
'inacessível'. Tenho certeza de que as duas sequências davam os mesmos resultados nas versões anteriores do bash - pelo menos no meu computador.
Alguém mais tem esse problema? É uma configuração padrão (por exemplo, no Debian 8) que pode ser alterada? (Tentei definir e desativar diferentes parâmetros do shell, shopt
mas sem sucesso).
Responder1
Bem, a solução que funciona para mim é esta: ~/.bashrc
eu tinha as falas
# 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
Esse é o bloco que pensei que cuida do preenchimento automático. Depois de comentar e iniciar um novo shell, não apenas funciona, mas voltou a ser como estou acostumado!
Ainda não tenho certeza do que a if
cláusula - significa, mas não tentarei consertar enquanto funciona.