Bash : De la couleur dans le shell

	Comment afficher du texte en couleur dans le shell ? 

Le passage de texte en couleur dans le shell est déclenché par la séquence :
\033[XXm
où « XX » est le code associé à la couleur choisie.
Le code couleur « 0 » ramène la coloration aux valeurs par défaut.

$ echo -e "\033[31mUn texte en rouge et\033[0m retour a la normale"

ex1:texterougeetretournormal

La couleur d’arrière plan peut aussi être modifiée :

$ echo -e "\033[45mHello world sur fond rose\033[0m"

ex2:fondrose

Les codes couleurs peuvent se cumuler :

$ echo -e "\033[34m\033[45mHello world bleu sur fond rose\033[0m"

Il est également possible de formater (un peu) le texte : gras (code « 1 »), souligné (« 4 »), texte clignotant (« 5 ») ou surligner (« 7 ») :

$ echo -e "\033[34mbleu, \033[1mgras, \033[4msouligné, \
> \033[5mclignotant \033[7met surligné\033[0m"

ex3:bleugrassoulig

Les cumuls ne nécessitent pas le rappel de la séquence d’échappement « \033[« . Les codes peuvent être cumulés en les séparant par un « ; » dans une seule séquence. Ainsi, un texte rouge, gras, souligné, clignotant et surligné peut s’écrire :

$ echo -e "\033[31m\033[1m\033[4m\033[5m\033[7mLe texte\033[0m"

mais peut se condenser en :

$ echo -e "\033[31;1;4;5;7mLe texte\033[0m"

ex4:Rougeclignotant

Les codes dans la trentaine (30, 31, 32, etc) désignent les couleurs du texte tandis que ceux de la quarantaine désignent les couleurs d’arrière plan (40, 41, 42, etc).

Les coloris disponibles sont principalement :

  • 30, 40 : noir ;
  • 31, 41 : rouge ;
  • 32, 42 : vert ;
  • 33, 43 : jaune ;
  • 34, 44 : bleu ;
  • 35, 45 : rose ;
  • 36, 46 : cyan ;
  • 37, 47 : gris.

Comme vu précédemment, les codes de la première dizaine sont destinés à une mise en forme des textes :

  • 0 : retour aux paramètres par défaut ;
  • 1 : texte en gras ;
  • 4 : souligner ;
  • 5 : clignotant ;
  • 7 : surligner.

Un aperçu du rendu des couleurs

Le script « tabColor » affichera un aperçu des combinaison de couleurs disponibles dans votre shell. Téléchargez le script (https://www.admin-linux.fr/wp-content/uploads/2013/09/tabColor.sh), donnez vous les droits d’exécution et invoquez le dans un terminal :

$ wget https://www.admin-linux.fr/wp-content/uploads/2013/09/tabColor.sh -O tabColor
$ chmod u+x tabColor 
$ ./tabColor

ex5:tabColors

Télécharger « tabColor »

Note : Le sujet de la couleur dans le shell à déjà été couvert indirectement sur ALF dans le post dédié à la personnalisation du prompt (Personnaliser le prompt).

3 réflexions au sujet de « Bash : De la couleur dans le shell »

  1. Le prompt PS1 suivant permet
    1 de repérer les lignes de commandes dans les pages avec de très longues listes de réponses: couleurs
    2 Sur la 1ère ligne: le nom de l’utilisateur + la machine
    3 et le répertoire courant complet ( ~ pour /home/$USER )
    4 Sur la 2e ligne: le mot Squeeze
    5 et si un git est initié, le nom de branche
    6 enfin le symbole $ (utilisateur) ou # ‘root) puis l’espace d’édition
    2 Lignes permettent surtout d’afficher un long chemin (1ere ligne) et de préserver une ligne assez longue pour la ligne de commande.

    Je modifie les couleurs de la 1e ligne en fonction de l’ utilisateur (root est en rouge!) ou d’une connexion distante sur mes sites web (avec sshfs)
    Le voici:

    PS1='${debian_chroot:+($debian_chroot)}\[\e[46;37;1m\]\u@\h:\[\e[43;36;1m\]\w\[\e[0m\]\n\[\e[46;33;1m\]Squeeze \t \[\e[44;37;1m\]$(parse_git_branch)\[\e[0m\]\$'

    1. La fonction parse_git_branch utilisée dans le PS1 ci dessus (dans .bashrc, avant PS1 )
      parse_git_branch() {
      # git branch sur le prompt (cf ligne de PS1 "prompt sans conditions")
      git branch 2> /dev/null | sed -n -e '/^*/p' -e 's/* \(.*\)/*\1/'
      }

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *