Ubuntu 11.04

left-small

Ubuntu 11.04 est sorti depuis le 28 avril 2011. Je ne reviendrai pas ni sur son ergonomie ni sur ses ajouts puisque cela a déjà été débattu sur de nombreux sites/blogs. Cependant, depuis la mise à jour, un point avait tendance à m’agacer.

En effet, dans un shell bash, sur la complétion de la commande ls (entre autre) avec des répertoires contenant des espaces, il ne m’échappait plus ces derniers. Du coup, obligation d’aller les échapper manuellement mais chose encore plus embêtante était qu’il ne me proposait plus le contenu de mon répertoire.

Pire, en échappant les espaces et en utilisant la complétion, il me supprimait mon échappement…

Cet article fournira donc une rapide solution pour corriger ce problème.

Symptôme

Pour l’arborescence ci-dessous, j’avais le comportement suivant : center

Utilisation basique de la complétion : center

Avec échappement de l’espace…

Avant : center

Avec échappement de l’espace…

Avant : center

Après exécution de la commande Tab : center

Entraînant, bien sûr, une erreur lors de son exécution : center

Correctif

Du coup, après une ou deux recherche sur mon ami google, je suis tombé sur le bug suivant.

En fait, pour résumer, il semble que cela vienne du script de complétion utilisé par bash.

Aussi pour corriger ce problème, il ne vous reste plus qu’à éditer le fichier /etc/bash_completion avec les bons droits et à modifier sa ligne 1587 pour y remplacer default par filenames.

1
2
3
4
5
6
7
8
9
10
# makeinfo and texi2dvi are defined elsewhere.
for i in a2ps awk bash bc bison cat colordiff cp csplit \
    curl cut date df diff dir du enscript env expand fmt fold gperf gprof \
    grep grub head indent irb ld ldd less ln ls m4 md5sum mkdir mkfifo mknod \
    mv netstat nl nm objcopy objdump od paste patch pr ptx readelf rm rmdir \
    sed seq sha{,1,224,256,384,512}sum shar sort split strip tac tail tee \
    texindex touch tr uname unexpand uniq units vdir wc wget who; do
    have $i && complete -F _longopt -o filenames $i
done
unset i

Après un petit coup de rechargement du bashrc (qui charge le bash_completion), vous aurez alors résolu votre problème ;–)

Rechargement du ~/.bashrc : center

Utilisation basique de la complétion et exécution : center

Utilisation de la complétion après complétion du répertoire : center

Voilà pour cet article qui, pour une fois, ne parle pas Java mais qui, je l’espère, pourra être utile… ;–)

in divers

Comments

comments powered by Disqus