Configuration du prompt de bash

Introduction

Ceci est un petit howto pour mettre en couleur le prompt de son shell bash.
Pour cela, il faut la version 2.0 et supérieur de bash, les versions précédentes ne fonctionnant pas de la même façon.

Le prompt de bash (comme la plupart des autres shell) utilise la variable d'environnement PS1 (Prompt String 1) pour configurer le prompt du shell. Les variables tel que le prompt doit être placé dans les fichiers ~/.bashrc, ~/.profile, etc, avec la ligne :

export PS1="hello"
lequel donne évidemment comme résultat un prompt quelque peut inutile, "hello"

Les couleurs utilisables

Tout d'habord, les couleurs utilisables pour personnaliser votre prompt sont les suivantes :

Couleurs Code ANSI
Black
Blue
Green
Cyan
Red
Purple
Brown
Gray
Dark Gray
Light Blue
Light Green
Light Cyan
Light Red
Light Purple
Yellow
White
\e[0;30m
\e[0;34m
\e[0;32m
\e[0;36m
\e[0;31m
\e[0;35m
\e[0;33m
\e[0;37m
\e[1;30m
\e[1;34m
\e[1;32m
\e[1;36m
\e[1;31m
\e[1;35m
\e[1;33m
\e[1;37m

Les caractères spéciaux

\a	une alarme (bip)
\d	la date actuelle au format "Weekday Month Date" ("Tue May 26")
\h	le nom de l'ordinateur
\H	le nom complet de l'ordinateur
\n	saut de ligne
\s	nom du shell ("bash")
\t	heure actuelle au format 24h HH:MM:SS
\T	heure actuelle au format 12h HH:MM:SS
\@	heure actuelle au format 12h am/pm
\u	le nom de login de l'utilisateur courant
\v	la version du bash ("2.00")
\V	la version release du bash, version + patchlevel ("2.00.0")
\w	le répertoire de travail actuel
\W	le répertoire de travail actuel depuis la racine
\!	numéro de commande courant
\nnn	le caractère nnn (base huit) est affiché (un é s'écrira '\\351')
\\	affichage d'un double-slash

Quelques exemples

Premier exemple très simple :

"linuxconf:/home/toto$"

où "linuxconf" est le nom de la machine, "/home/toto" le pwd, etc.
sera :

export PS1="\[\e[0;32m\]\h\[\e[0;37m\]:\[\e[1;32m\]\w\[\e[0;37m\]\\$"

Deuxième exemple un peu plus complexe :

"[23:05:55]toto@linuxconf:/usr/local/src$"

sera :

export PS1="\[\e[1;30m\][\e[0;35m\]\t\[\e[1;30m\]] 
            \[\e[1;36m\]\u\[\e[1;30m\]@\[\e[0;36m\]
	    \h\[\e[1;30m\]:\[\e[0;37m\]\w\[\e[1;30m\]
	    \\$\[\e[0;37m\]"