
Usando bash
en este este sistema:
Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u4 (29/02/2016) x86_64 GNU/Linux
La secuencia:
cd /tmp
touch test1.txt && touch test2.txt && touch test3.txt
ls test [tab][tab]
Muestra:
test1.txt test2.txt test3.txt
debajo de la línea de comando.
Así es como espero bash
que se comporte el autocompletado.
Pero cuando escribo:
ls test* [tab][tab]
(esperando el mismo resultado) solo obtengo (es decir, autocompletar exclusivamente se expande a):
test1.txt
Por lo tanto, el *
comodín asterisco ( ) al final lo convierte en test[23].txt
"inalcanzable". Estoy bastante seguro de que las dos secuencias solían dar los mismos resultados en versiones anteriores de bash, al menos en mi computadora.
¿Alguien más tiene este problema? ¿Es una configuración predeterminada (por ejemplo, en Debian 8) que se puede cambiar? (Intenté configurar y desarmar diferentes parámetros de Shell, shopt
pero fue en vano).
Respuesta1
Bueno, la solución que me funciona es esta: en ~/.bashrc
tenía las líneas
# 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
Ese es el bloque que pensé que se encarga del autocompletado. Sin embargo, después de comentarlo e iniciar un nuevo shell, no solo funciona, sino que ha vuelto a la forma a la que estaba acostumbrado.
Todavía no estoy seguro de qué if
significa la cláusula -, pero no intentaré arreglarla mientras funcione.