Personnaliser l'invite de bash
Par Alexis Lefebvre le mercredi 8 septembre 2010, 21:21 - Lien permanent
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 :
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 :
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 :
- BASH Shell change the color of my shell prompt under Linux or UNIX
- How to: Change / Setup bash custom prompt (PS1)
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.