Personnaliser son Bash : mise en forme et couleurs du prompt
A la réception/installation d’un nouveau serveur Linux, je configure toujours mon Shell, et plus particulièrement le « prompt » de Bash.
Bash est le Shell le plus courant de Linux, et le « prompt » est ce que vous voyez avant chaque commande.
Exemple :
1 Nom_du_serveur:/home #
C’est bon, vous suivez toujours, j’ai perdu personne ?
Il est possible de configurer le prompt pour qu’il ressemble à quelque chose soit plus utile. Attention, cet article est prévu pour des utilisateurs avertis, qui n’ont pas peur des expressions régulières !
Ci-dessus, vous pouvez voir un exemple de prompt personnalisé, le mien en l’occurrence. Avant chaque commande, je peux voir :
- le numéro de la commande,
- l’heure,
- le nom du serveur,
- le Path …
… et le tout en couleurs, s’il-vous-plaît !
Pour voir à quoi ressemble la configuration de votre prompt actuel :
[ (20) 14:09:50 ] ikki:~$ echo $PS1
\[\e[3;32m\][\[\e[m\] (\#) \[\e[0;33m\]\t\[\e[m\] \[\e[3;32m\]]\[\e[m\] \[\e[0;32m\]\h:\w$ \[\e[m\]
Si on reste logique, on peut modifier le prompt directement en live, en tapant :
1 | export PS1="nouvelle_configuration_du_prompt" |
.
Exemple : export PS1= »[\d \t \u@\h:\w ] $ »
Affichera la date, l’heure, le hostname, et le path.
Pour que ça reste permanent, il faut éditer le fichier de configuration de bash (~/.bashrc pour moi) de l’utilisateur en cours, et modifier/rajouter la ligne :
1 | export PS1="nouvelle_configuration_du_prompt" |
.
Je suis curieux : qui d’autre à personnalisé son bash à part moi ?
Pour la syntaxe complète et les informations, vous pouvez vous référer au man de bash, ou encore aux informations suivantes.
Caractères spéciaux
- \a : an ASCII bell character (07)
- \d : the date in « Weekday Month Date » format (e.g., « Tue May 26″)
- \D{format} : the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces are required
- \e : an ASCII escape character (033)
- \h : the hostname up to the first ‘.’
- \H : the hostname
- \j : the number of jobs currently managed by the shell
- \l : the basename of the shell’s terminal device name
- \n : newline
- \r : carriage return
- \s : the name of the shell, the basename of $0 (the portion following the final slash)
- \t : the current time in 24-hour HH:MM:SS format
- \T : the current time in 12-hour HH:MM:SS format
- \@ : the current time in 12-hour am/pm format
- \A : the current time in 24-hour HH:MM format
- \u : the username of the current user
- \v : the version of bash (e.g., 2.00)
- \V : the release of bash, version + patch level (e.g., 2.00.0)
- \w : the current working directory, with $HOME abbreviated with a tilde
- \W : the basename of the current working directory, with $HOME abbreviated with a tilde
- \! : the history number of this command
- \# : the command number of this command
- \$ : if the effective UID is 0, a #, otherwise a $
- \nnn : the character corresponding to the octal number nnn
- \\ : a backslash
- \[ : begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
- \] : end a sequence of non-printing characters
Rajouter des couleurs
- Pour ouvrir la partie en couleurs : \e[x;ym
- Pour fermer : \e[m
Il vous reste à remplacer X et Y par les codes couleurs du tableau suivant.
Liste des couleurs
Couleur | Code |
Noir | 0;30 |
Bleu | 0;34 |
Vert | 0;32 |
Cyan | 0;36 |
Rouge | 0;31 |
Violet | 0;35 |
Brun | 0;33 |
Vert | 0;32 |
Nota : remplacez le digit 0 par 1 pour avoir une version plus claire de la couleur.
Commentaire by moon06 — 5 janvier 2009 @ 10:06
Ou sinon, pour avoir un beau prompt, passez sous Gentoo
Commentaire by Stealth — 25 juin 2009 @ 10:38
Tu as mis « Nota : remplacez le digit 0 par 1 pour avoir une version plus claire de la couleur. »
Voici d’autres valeurs qui peuvent être mise :
4 = souligné
5 = clignotant
7 = inversé
Commentaire by LeXa — 24 septembre 2009 @ 11:31
Pour ma part je me suis suis fait un peu chier car j’aime bien les « [ » donc au niveau syntaxe c une horreur !
Je te le colle ici et je te laisse l’essayer ! Pour root j’ai rajouter un @ clignotant, la classe !
\n${debian_chroot:+($debian_chroot)}\[33[03;36m\][\[33[00m\]\u\[33[03;36m\]@\[33[00m\]\h\[33[03;36m\]]\[33[03;36m\]\w\[33[00m\]\n\[33[03;36m\]\[[33[00m\]\A\[33[03;36m\]]\[33[03;36m\]\[33[00m\]\$
Commentaire by erdnaxeli — 9 novembre 2009 @ 7:31
Moi j’aime bien les consoles aérées :P. Voici mon prompt : « \n\e[01;34m\]\u\e[m\]@\e[01;32m\]\h\e[m\]:\e[01;35m\]\w\e[m\] [\t] #\#\n \$ « .
Commentaire by gero — 26 janvier 2010 @ 9:56
J’aime bien celui de erdnaxeli !
J’avais un soucis avec celui par defaut avec mon terminal putty.
Quand je remonter des ligne de commande passer, il lui arriver d’effacer une partie du prompt, des chevauchement de partie de ligne de code.
Un truc un peu chiant.
Le retour a la ligne du bash m’a corriger ce problème
Commentaire by Phuong Smigiel — 23 août 2011 @ 7:39
Hey, fantastic post, I’ve just subscribed to your site, keep up the fantastic work.
Commentaire by deaconoclaste — 28 mai 2013 @ 23:20
Merci, ces informations avec l’aide de cet excellent article :
http://benedictux.com/archives.php?id_article=20,
sont bien pratiques pour personnaliser nos prompts simplement !!!!