Assouplir la casse en console


Ce billet fait echo à l'article "Personnaliser les dossiers par défaut sous Ubuntu", par Michael Zwissig. Il évoque entre autres le fait d'oublier de taper les majuscules en console, pour les dossiers créés par défaut: Images, Documents, Modèles, Téléchargements, Vidéos, Bureau, etc.

Cela me rappelle qu'il est possible de contourner ce problème avec une petite astuce, sans avoir besoin de renommer tous les répertoires en minuscules.

Le tips magique

Il se situe dans .inputrc, qui vient redéfinir le comportement de bash et sh. Ici, nous pouvons le forcer à ignorer la casse en utilisant cette commande:
$ echo "set completion-ignore-case On" >> ~/.inputrc
Seulement la casse n'est pas totalement supprimée. Si elle n'existait plus, nous ne pourrions plus créer des fichiers de même nom mais différents à quelques majuscules près (comme dans l'OS de monsieur Porte). La casse devient en fait juste "manuelle", c'est à dire qu'il faut l'expliciter manuellement.

Quelques exemples

Comme cela n'est pas très clair, je vais illustrer cette "casse manuelle". Créons ces fichiers de test (j'utilise bash):
$ touch exemple EXEmple EXEMPLE exeMPLE
Si nous tapons cat exe<TAB>, nous aurons ce genre de complétion:
$ cat exe<TAB>
$ cat exemple
Le mot est complété par "exemple", directement en minuscules car la casse n'est plus prise en compte.
Si nous utilisons cat EXE<TAB>:
$ cat EXE<TAB>
$ cat EXEmple
Bash remplace la suite encore une fois par les minuscules, vu que la casse doit être ignorée.
Pour manipuler le fichier tout en majuscule, il aurait alors fallu taper cat EXEM<TAB>:
$ cat EXEM<TAB>
$ cat EXEMPLE
En effet, bash n'a plus le choix vu qu'il n'existe qu'un seul fichier dont les première lettres en majuscules sont EXEM.
Enfin on l'aura compris, si nous voulons le fichier exeMPLE, nous devrons taper toutes les lettres jusqu'à la majuscule:
$ cat exeM<TAB>
$ cat exeMPLE
Maintenant que nous avons saisi le truc, il devient facile d'aller dans un répertoire dont le nom commence par une majuscule:
$ mkdir Divers
$ cd div<TAB>
$ cd Divers

Le mot de la fin

Voila qui peut résoudre le problème de noms en majuscules sur lequel nous sommes nombreux à buter sous bash.
Je parle de bash, car ce problème n'existe pas avec zsh, qui gère très bien la casse dans les fichiers sans aide extérieure.
Aujourd'hui je n'ai pas de sources ni de lien à vous proposer, car cela fais quelques années que j'ai trouvé l'astuce, sans me souvenir de son origine. Merci à l'un des internautes qui m'a rafraichis la mémoire. :)

Lien utile




EDIT: Il semblerait que Chicha avait déjà proposé la solution en 2009, donc toutes mes excuses pour cette "remontée" involontaire.
Vus : 1878
Publié par PPmarcel : 21