il completamento automatico di bash fallisce con il carattere jolly


1

Utilizzando bashsu questo sistema:

Linux 3.16.0-4-amd64 # 1 SMP Debian 3.16.7-ckt20-1 + deb8u4 (2016-02-29) x86_64 GNU / Linux

La sequenza:

cd /tmp
touch test1.txt && touch test2.txt && touch test3.txt
ls test [tab][tab]

Spettacoli:

test1.txt test2.txt test3.txt

sotto la riga di comando.

È così che mi aspetto bashche si comporti il ​​completamento automatico.

Ma quando scrivo:

ls test* [tab][tab]

(aspettandomi lo stesso risultato) Ottengo solo (ad esempio il completamento automatico si espande in):

test1.txt

Quindi il *carattere jolly asterisco ( ) alla fine rende test[23].txt"irraggiungibile". Sono abbastanza sicuro che le due sequenze utilizzate per dare gli stessi risultati nelle versioni precedenti di bash - almeno sul mio computer.

Qualcun altro ha questo problema? È un'impostazione predefinita (es. In Debian 8) che può essere cambiata? (Ho provato a impostare e disinserire diversi parametri di shell con shoptma senza risultati).

Risposte:


0

Bene la soluzione che funziona per me è questa: in ~/.bashrcavevo le linee

# 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

Questo è il blocco che pensavo si occupasse del completamento automatico. Dopo aver commentato e avviato una nuova shell, tuttavia, non solo funziona ma è tornato al modo in cui sono abituato!

Non sono ancora sicuro del ifsignificato di -clause, ma non proverò a risolverlo mentre funziona ..

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.