Personnaliser l'invite de bash

Les cours de Systèmes que je suis actuellement sont dispensés dans des salles informatiques où les ordinateurs ne disposent pas de fish, mon shell de prédilection. Je ne peux utiliser que le classique bash, souvent le shell par défaut, dont l'utilisation est rendue pénible par l'absence de couleurs :

Bash sans couleurs

Sans couleurs, il est difficile de distinguer les commandes et leurs résultats. Heureusement, bash peut être configuré pour ressembler à fish.

Modifier la configuration de bash

La configuration de bash se fait dans le fichier ~/.bashrc, c'est à dire le fichier .bashrc situé à la racine du répertoire personnel de l'utilisateur.

Ouvrons ce fichier :

nano ~/.bashrc

nano est un éditeur de texte utilisable depuis un terminal. Une fois le fichier édité, il faut appuyer sur Ctrl + O puis <Entrée> pour sauvegarder le fichier puis sur Ctrl + X pour fermer nano. Le fichier peut aussi être édité en mode graphique en utilisant gedit à la place de nano.

La commande ls liste le contenu d'un répertoire, il est très pratique de colorer les différents fichiers en appelant automatiquement l'argument --color. Par défaut la commande ls affiche seulement les noms des dossiers et fichiers, en pratique on ne l'utilise quasiment jamais telle quelle. Avec l'option -l la commande ls affiche davantage d'informations utiles. Pour éviter d'avoir à taper systématiquement ls -l, je crée l'alias ll qui exécutera la commande ls -l. J'ajoute les lignes suivantes dans le fichier ~/.bashrc :

alias ls="ls --color"
alias ll="ls -l"

La coloration est aussi possible avec grep :

alias grep="grep --color"

Enfin, la coloration de l'invite, le texte s'affichant lorsque le terminal attend les commandes, fait ressortir ces dernières :

export PS1="\u@\[\e[0;34m\]\h\[\e[m\]:\[\e[0;32m\]\w\[\e[m\]\$ "

\u est le nom d'utilisateur (user), \h le nom de la machine (host) et \w le chemin du répertoire courtant (working directory). La coloration est réalisée entre les balises \e[0;34m et \e[m, les codes couleurs sont présentés dans les liens connexes. Les balises [ et ] évitent que bash interprète ce code comme du texte, sans ça bash tronque la ligne de commande ce qui perturbe l'affichage des longues lignes de commandes.

Aperçu

Il faut ouvrir un nouveau terminal pour voir le résultat de ces modifications :

Bash avec des couleurs

Le nom de la machine (lieu) est coloré en bleu alors que le répertoire courant (~/Exos_systeme) est coloré en vert, ce qui permet de repérer plus facilement les lignes de commandes. Le raccourci ll affiche le dossier et les fichiers en utilisant plusieurs couleurs. Enfin, grep met en valeur en rouge la chaîne recherchée dans les lignes. Il est à noter que la commande tail -n 5 utilisée pour limiter le résultat à 5 lignes supprime la coloration, c'est pourquoi il faut exécuter une seconde fois la commande grep Toulouse.

Notes

Ces modifications rendent l'utilisation du terminal bien plus confortable. Selon les différents fichiers par défaut inhérents aux versions des logiciels, il est possible que votre fichier ~/.bashrc contienne déjà les alias des commandes, dans ce cas il suffit de décommenter les lignes (retirer les signes # en début de ligne) pour créer les alias.

J'ai utilisé les articles suivants pour modifier mon invite de commandes :

Mise à jour du 04-10-2010

Dotclear interprétait les caractères de coloration de l'invite, le code a été corrigé pour s'afficher correctement.