o autocompletar bash falha com curinga

1

Usando bash neste sistema:

Linux 3.16.0-4-amd64 # 1 SMP Debian 3.16.7-ckt20-1 + deb8u4 (2016-02-29) 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 eu espero que bash autocomplete se comporte.

Mas quando eu digito:

ls test* [tab][tab]

(esperando o mesmo resultado) só recebo (por exemplo, o preenchimento automático expande-se exclusivamente para):

test1.txt

Portanto, o curinga asterisco ( * ) no final torna test[23].txt 'inacessível'. Tenho certeza que as duas seqüências usadas para dar os mesmos resultados em 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? (Eu tentei definir e desarmar diferentes parâmetros do shell com shopt , mas sem sucesso).

    
por alle_meije 14.04.2016 / 11:13

1 resposta

0

Bem, a solução que funciona para mim é esta: em ~/.bashrc eu tinha as linhas

# 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 cuidar do autocompletar. Depois de comentar e começar um novo shell, não só funciona, mas voltou ao jeito que eu estou acostumado!

Ainda não tenho certeza do que significa if -ause, mas não tentarei consertá-lo enquanto estiver funcionando.

    
por 26.05.2016 / 09:26