Personnaliser le shell bash : alias, historique, prompt
Table des matières
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.
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 :
Il est possible de saisir des alias dedans de la forme:
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.
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 :
Ainsi que HISTSIZE qui permet de définir le nombre de commandes dans l'historique :
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 :
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 :
On peut en plus ajouter des couleurs avec les codes suivant spéciaux :
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 :
Ajouter une couleur verte au prompt (la commande est en couleur normale après) :
Afficher un symbole dans le prompt :
Afficher un état du code retour en couleur de la dernière commande :
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.
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.
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.
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 :
|
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.