Bash : personnalisation de l'invite.
Le terminal sous GNU/Linux est très pratique et pouvoir le personnaliser, pour être plus efficace et qu'il soit à son gout, c'est quand même mieux.
Plusieurs articles ont déjà parlé du terminal et je vais donc vous montrer comment personnaliser l'invite de commande.
L'invite est le texte qui est présent dans le terminal avant chaque commande. Celui par défaut ressemble à celle la:
[xenom@nomdemachine ~]$
Avec entre crochets le nom d'utilisateur@le nom de la machine, un espace et le dossier courant. Puis un "$" montrant que vous êtes connecté en utilisateur normal. Si vous êtes connecté en tant que root ce ne sera plus "$" mais "#".
Comment personnaliser cette invite ?
La variable d'environnement PS1 permet de définir le format de l'invite.La variable PS2 permet de modifier l'invite de continuation (celle qui apparait quand le shell attend d'autres instructions, par defaut ">").
Pour la mise en forme nous disposons de caractères spéciaux :
L'invite par défaut a cette forme : [u@h W]$
- u : nom de l'utilisateur.
- h : nom de la machine.
- W : nom du dossier courant.
- $ : affiche $ pour un utilisateur et # pour root.
En voici d'autres :
- w : chemin complet du répertoire de travail.
- d : date format texte ("sam. janv. 31").
- A : heure format 24h sans secondes.
- : heure format 24h avec les secondes.
- T : heure format 12h avec les secondes.
- @ : heure format 12H sans secondes.
- D{%d-%m-%Y %H:%M:%S%z} : Date et heure dans un format personnalisable (ici jour-mois-année sur 4 chiffres heure:minute:seconde fuseau horaire).
/! Attention la date et l'heure sont celles lors de l'apparition du prompt! L'heure ne défile pas!
- $? : code de retour de la dernière commande (0 si OK, 1 si erreur).
- `commande_ou_fonction` : lance la commande ou fonction.
- j : nombre de tache en cours dans le terminal (pratique si vous lancez des tâches en arrière plan).
- # : le numéro de la commande.
- v : version de bash.
- : nouvelle ligne.
Et maintenant la couleur!
On peut mettre en couleur l'invite et les commandes qui suivent.
Avec le code "e[0;34m" la suite du texte sera en couleur. Il suffit de remplacer "0;34" par le code couleur voulu. Pour définir la fin de la mise en couleur : "e[0m". Si vous ne mettez pas de fin, toute la suite sera en couleur (même les résultats des commandes).
Codes couleurs :
- Noir 0;30
- Gris foncé 1;30
- Bleu 0;34
- Bleu clair 1;34
- Vert 0;32
- Vert clair 1;32
- Cyan 0;36
- Cyan clair 1;36
- Rouge 0;31
- Rouge clair 1;31
- Violet 0;35
- Violet clair 1;35
- Brun 0;33
- Jaune 1;33
- Gris clair 0;37
- Blanc 1;37
En fait, le premier nombre correspond au type de la couleur : 0 foncé, 1 clair, 4 souligné, 7 fond, 9 barré.
Et des exemples d'invite :
export PS1="u@h A> "
xenom@hostname 14:13>
Nom_d'utilisateur@Nom_de_la_machine heure>
export PS1='e[0;31mu@h e[0;35mw > e[1;34m'
xenom@hostname /home >
Affichera le nom d'utilisateur et le nom de machine en rouge, le dossier courant en violet et le reste de la commande en bleu.
export PS1='u@h [`ps ax | wc -l`(j)] $ '
xenom@myhost [109(0)] $
Nom_d'utilisateur@Nom_de_la_machine [Commande_pour_compter_le_nombre_de_processus (tâches_en_arrière_plan)] $
Pour sauvegarder l'invite :
Pour modifier l'invite, il suffit de rentrer dans le terminal :
export PS1="Ce_que_vous_voulez_comme_invite"
Mais dans ce cas, l'invite ne sera modifiée que pour le terminal courant.
Pour le sauvegarder de façon définitive, il suffit de rajouter :
PS1="Ce_que_vous_voulez_comme_invite"
dans le fichier ~/.bashrc.
Autres astuces :
D'autres articles sur génération-linux ont déjà parlé de personnalisation du terminal, je vous invite à les lire (ou relire ;) ) :
$PATH, qu'est-ce que c'est, comment changer les dossiers par défaut ?
Une astuce tres pratique pour le terminal : ajouter un alias
Marre de votre terminal terne et sans vie?
Je vous conseille aussi la lecture de Bash, le livre de recettes par Carl Albing, JP Vossen & Cameron Newham, édition O'Reilly qui m'a aidé pour cet article et beaucoup d'autres choses.