Console

Personnaliser le shell bash : alias, historique, prompt

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

bash-logo



Introduction



Le shell (bash ou autre) est personnalisable via un fichier de configuration.

Pour BASH, il s'agit du fichier .bashrc. Il se situe dans le dossier ~/.bashrc. Il est lu à chaque exécution du shell.

S'il n'est pas lu, vérifier la présence du fichier de profile .bash_profile qui doit appeler .bashrc:

Code BASH :
# if running bash
if [ -n "$BASH_VERSION" ]
then
    # include .bashrc if it exists
    if [ -f "~/.bashrc" ]
    then
        . "~/.bashrc"
    fi
fi
 


On pourra ajouter dans ce fichier des alias, des fonctions, des modifications du prompt.

Après modification du fichier ~/.bashrc, pour le prendre en compte :
Code BASH :
source ~/.bashrc


Les alias



Il est possible de saisir des alias dedans de la forme:
Code BASH :
alias code="commande"


Le but est de rajouter ses propres alias pour se simplifier l'utilisation quotidienne.

Il suffira de saisir l'alias pour lancer la commande associée.

Code BASH :
alias gg="ping google.fr"


Personnalisation de l'historique



Il existe des variables HISTXXX qui permettent de personnaliser le comportement de la commande history.

Parmi ces variables, je modifie HISTTIMEFORMAT pour avoir un horodatage sur la date et heure d'exécution de la commande :

Code BASH :
HISTTIMEFORMAT="%F %T "


Ainsi que HISTSIZE qui permet de définir le nombre de commandes dans l'historique :

Code BASH :
HISTSIZE=5000


Personnalisation du prompt



Le prompt est personnalisable directement dans le fichier .bashrc.
La définition de l'affichage du prompt est définie par la variable $PS1.

Le prompt par défaut est souvent défini par cette forme :
Code BASH :
[\u@\h \W]\$


On remarquera qu'il y a des symboles spéciaux échappés par le caractère backslash.
Voici un petit tableau récapitulatif des caractères utilisables :
Code BASH :
\u
Nom d'utilisateur actuel
Code BASH :
\$
Indique le statut : $ pour utilisateur et # pour root
Code BASH :
\h
Nom d'hôte court
Code BASH :
\H
Nom d'hôte complet
Code BASH :
\w
Chemin complet du répertoire de travail
Code BASH :
\W
Nom du répertoire de travail sans le chemin
Code BASH :
\d
Date au format Joursemaine Mois Jour
Code BASH :
\t
Heure au format 24h hh:mm:ss
Code BASH :
\T
Heure au format 12h hh:mm:ss
Code BASH :
\@
Heure au format 12h avec AM/PM
Code BASH :
\#
Numéro de commande dans la session
Code BASH :
\!
Numéro de commande dans l'historique
Code BASH :
\n
Nouvelle ligne
Code BASH :
\e
Echappement


On peut en plus ajouter des couleurs avec les codes suivant spéciaux :
Code BASH :
\[\e[32m\]
Début de couleur verte
Code BASH :
\[\e[31m\]
Début de couleur rouge
Code BASH :
]\[\e[44m\]
Début surligné bleu
Code BASH :
]\[\e[01m\]
Début de caractères en gras
Code BASH :
]\[\e[1;31m\]
Début de caractères en gras et rouge
Code BASH :
\[\e[1;32;44m\]
Début de gras, en vert surligné en bleu
Code BASH :
\[\e[0m\]
Fin de la couleur


On prendra garde d'échapper les crochets ouvrants et fermants pour éviter des problèmes d'affichage.
Pour les couleurs, notons : 30m noir, 31m rouge, 32m vert, 33m jaune, 34m bleu, 35m magenta, 36m cyan, 37m blanc
Pour les fonds, notons : 40m noir, 41m rouge, 42m vert, 43m jaune, 44m bleu, 45m magenta, 46m cyan, 47m blanc
Pour le style de texte : 1m gras, 3m italique, 4m souligné
Pour combiner les styles, les séparer par un point virgule : 1;32;44m (gras + vert + fond bleu)

Voici quelques exemples.

Afficher l'utilisateur, l'hôte et le répertoire :
Code BASH :
PS1='\u@\h:\w\$ '


Ajouter une couleur verte au prompt (la commande est en couleur normale après) :
Code BASH :
PS1='\[\e[32m\]\u@\h:\w\$\[\e[0m\] '


Afficher un symbole dans le prompt :
Code BASH :
PS1='\u@\h \w ➜ '


Afficher un état du code retour en couleur de la dernière commande :
Code BASH :
PS1='\u@\h:\w \[$(if [ $? -eq 0 ]; then echo "\[\e[32m\]✔"; else echo "\[\e[31m\]✘"; fi)\] \$ \[\e[0m\]'


On peut tester à la volée le prompt en redéfinissant la variable PS1.
Si on souhaite garder les modifications, on complètera le fichier .bashrc avec notre nouvelle variable PS1.


Créer des scripts personnalisés



On peut aussi créer un script colorprompt.sh par exemple et le placer dans /etc/profile.d et le rendre exécutable. Il sera automatiquement exécuté à chaque ouverture de shell.