Trucs:Prompt : une invite de commande en couleur

De Lea Linux
Aller à la navigation Aller à la recherche
asteroid<l.asteroid chez laposte.net>

Il est utile quand on travaille en console de différencier du premier coup d'œil le résultat d'une commande. Pour ça, on peut customiser le prompt de différentes façons :

  • utilisez un prompt en couleur
  • utilisez le retour à la ligne en fin de prompt
  • combiner les deux :)

Pour ça il vous faut modifier le fichier .bashrc qui se trouve dans votre répertoire personnel en rajoutant à la fin PS1="votre \prompt\perso"

Je ne vais pas entrer dans le détail (sauf si on me le demande) car tout le web en parle. Seulement je vais m'attarder sur un point qui est très gênants, la couleur.

Pour la suite il faut juste savoir que :
\u est le nom de l'utilisateur (root, pikachou, asteroid, ...)
\h est votre hostname (bench, monPC, station, MIR, ...), jusqu'au premier point
\H est votre hostname complet
\W est le répertoire courant (celui dans lequel vous êtes)
\w est le chemin complet du répertoire courant
\n permet de revenir à la ligne
\r est le retour chariot
\D{format} est la date courante, formatée comme expliqué dans man strftime
\$ qui met un $ quand vous n'êtes pas root ou un # si vous l'êtes
et :
\e séquence d'échappement pour les couleurs
\[ début de texte non imprimable
\] fin de texte non imprimable
(voir la page sur Bash de Wikipedia)


Par défaut le PS1 est [\u@\h \W]\$ et on le connait en faisant echo $PS1

Lorsque j'ai mis de la couleur dans mon prompt j'ai fait PS1="\e[1;31m\u sur \h dans \w \n=>\e[0m" ce qui me donne un prompt rouge du style :

root sur machine dans /home/pikachou
=>

Remarque : [01;31m est de type [couleur de fond;couleur du textem

Le fait de saisir PS1="... dans une console permet de voir les modifs sans pour autant les enregistrer directement. un exit vous remettra au prompt précédent. Mais malheureusement, lorsque je tapais des commandes qui dépassaient la fin de la ligne ça ré-écrivait sur le prompt au lieu d'aller à la ligne.

L'astuce consiste donc à remplacer \e[1;31m par \[\e[1;31m\] et pareil pour arrêter la couleur le \[\e[0m\].

Pour conclure : \[\e[1;31m\] commence la couleur dans le Bash (ici uniquement le prompt) et \[\e[0m\] arrête la couleur.

Le code couleurs est facile à trouver sur le web et en français avec un tas de petites explications :)

Voila j'espère que ce petit post aura résolu le problème de certains et donner envie aux autres d'en savoir plus sur le bash et son prompt :-)

Merci a babar et scriptfanix pour mes lacunes en anglais.


Note: certains shell n'acceptent pas \e comme caractère d'échappement (ou le remplacent par \033). Il faut utiliser \033 à la place. Par exemple \[\033[01;31m\] au lieu de \[\e[01;31m\].

Voir aussi http://blog.gnusquad.org/2008/11/22/mettez-de-la-couleur-dans-votre-prompt/