Comment afficher les couleurs dans le terminal

Voulez-vous afficher des textes en couleurs, en gras, en italique, soulignés, etc. La compréhension de quelques règles et codes rend la chose plus facile qu'il n'y paraît. Apprenez à afficher des couleurs dans votre terminal avec la clarté de quelqu'un qui sait ce qu'il fait.

Temps de lecture estimé : 8 minutes

Une fois que vous avez compris comment utiliser les couleurs dans votre terminal, c’est super facile à utiliser. Colorer le code de vos scripts shell est presque indispensable !

J’ai essayé d’analyser le contenu aussi objectivement que possible. J’espère qu’il s’agit d’un bon point de départ pour vous permettre de tout peindre, hehe. Voyons ce qu’il en est.

Code d’échappement

Tout d’abord, il est important de savoir que pour activer la couleur, vous devez utiliser un code d’échappement qui appelle la fonction de coloration. ESC[mCe code est le suivant .

Le code peut être appelé de différentes manières. man asciiSelon le tableau ascii à :

Oct   Dec   Hex   Char
-------------------------------
033   27    1B    ESC (escape)

\033Personnellement, j’aime appeler ESC par l’octal . \eDans les nouvelles versions de bash, vous pouvez également appeler , mais l’utilisation de l’hexadécimal ou de l’octal vous donnera moins de maux de tête. Note : la décimale ne fonctionne généralement pas !

Attention : Sur MacOS, la dernière version de bash est très ancienne, 3.2.57. Je vous recommande de mettre à jour vers la version 5 avec brew.

Appelez donc la fonction de formation de style comme suit (nous n’avons pas encore introduit de styles/couleurs) :

echo -e "\033[m" Texto pronto para receber cores. Escape em octal
echo -e "\x1b[m" Outro texto sem cores. Escape em hexadecimal

Formatage

Commençons donc à colorier. Fondamentalement, nous devons tenir compte de trois caractéristiques de la mise en forme. Elles sont les suivantes :

  1. Effet de décoration du texte
  2. Couleur du texte (premier plan)
  3. Couleur de fond

Chacune de ces caractéristiques a un code unique, que vous trouverez ci-dessous.

Décoration

Le tableau ci-dessous devrait fonctionner pour tous les modes de couleur, mais pas toujours pour tous les terminaux. Chaque terminal a ses propres particularités.

Código  | Descrição
------- | -----------
0       | Reset/Normal
1       | Bold text
2       | Dim (escurece)
3       | Italics
4       | Underlined text
5       | Blink
7       | Reverse
8       | Hidden
9       | Tachado

ESC[ mAppliquez le code entre et .

ESC[0m ESC[mAprès chaque morceau de texte coloré, réinitialisez-le (0) avec , ou omettez simplement tout code, en laissant .

echo -e "\033[1m" Com negrito. "\033[m" Texto normal.  
echo -e "\033[1m" Com negrito. "\033[m" Texto normal.  

Vous pouvez également combiner le formatage en séparant les codes avec la touche ;

echo -e "\033[1;3m" Negrito e itálico. "\033[0m" Texto normal.  

En utilisant printf, la syntaxe change un peu, mais elle est tout aussi simple. Elle est divisée en deux parties : le formatage, où vous définissez les détails du type (texte, nombre, codes de couleur, etc.) et les arguments, où vous entrez les informations qui recevront le formatage. Voir les exemples :

printf '\033[1;3m %s \033[0m' "Texto decorado."
printf '\033[48;2;255;255;255;38;2;255;0;255m %3d \033[0m %s \033[1;4;31m %3d \033[0m' 100 "Texto sem cor:" 3

Note : Pour des raisons didactiques, le formatage printf est encadré par des guillemets simples ‘ ‘, et les arguments suivent.

Modes de couleur

Les choses deviennent ensuite plus complexes, car chaque terminal peut lire d’une manière différente. D’un terminal à l’autre, il peut y avoir un support pour plus ou moins de modes de couleurs. Sur MacOS, iTerm 2 est un bon choix, même avec des séparateurs de fenêtres, ce qui est très intéressant pour ceux qui passent la journée à travailler dans le terminal. Cependant, le terminal standard de macOS ne devrait pas vous gêner à cet égard. Un collègue a patiemment établi ce tableau de compatibilité intéressant.

Il existe 4 modes de couleurs :

  1. ASCII pur
  2. Codes d’échappement ANSI : 16 codes de couleur avec gras/italique et arrière-plan
  3. 256 couleurs : 216 couleurs + 16 ANSI + 24 gris (couleurs 24 bits)
  4. Couleurs réelles 24 bits : « 8 8 8 » ou « 11111111 11111111 » (16 millions de couleurs)

Mode 8/16 couleurs

Comme indiqué ci-dessus, chaque couleur a un code unique. Dans ce mode, les couleurs qui modifient le texte ont les codes « 3x » et « 9x » et les couleurs qui modifient l’arrière-plan commencent par « 4x » et « 10x ». Voir le tableau

Color           | Foreground Code   | Background Code
--------------- | ----------------- | --------------
Default Color   | 39                | 49
Black           | 30                | 40
Red             | 31                | 41
Green           | 32                | 42
Yellow          | 33                | 43
Blue            | 34                | 44
Magenta         | 35                | 45
Cyan            | 36                | 46
Light Gray      | 37                | 47
Gray            | 90                | 100
Light Red       | 91                | 101
Light Green     | 92                | 102
Light Yellow    | 93                | 103
Light Blue      | 94                | 104
Light Magenta   | 95                | 105
Light Cyan      | 96                | 106
White           | 97                | 107

Pour ce mode, la syntaxe du code peut suivre le schéma suivant ESC[E;F;BmE peut contenir plusieurs codes de décoration.

Código  | Descrição
------- | ---------
ESC[    | Sequência de escape para iniciar cores
E       | Código de efeito.
F       | Código da cor do texto; um valor de 30 à 37.
B       | Código de cor de fundo; um valor de 40 à 47.
m       | Representa o fim da sequência de cores.

L’ordre du code n’a pas d’importance non plus.

Exemples :

echo -e "\033[1;92;104m Texto verde claro em negrito com fundo azul claro \033[m"
echo -e "\033[5;3;31;107m Texto vermelho, piscante, itálico com fundo branco \033[m"
echo -e "\033[4;90m Texto cinza, sobrescrito\033[m"
echo -e "\033[1;5m Bold+Blink \033[0m"
echo -e "\033[1;4;31m Bold+Underline+Red \033[0m"

Le code couleur peut également être saisi sous forme de variables :

# Seta cores
RED='\033[0;31m'
HEADER='\033[95m'
OKBLUE='\033[94m'
OKGREEN='\033[92m'
WARNING='\033[93m'
FAIL='\033[91m'
BOLD='\033[1m'
UNDERLINE='\033[4m'
ENDC='\033[0m'

echo -e "${RED}LINHA COM CORES${ENDC}"
echo -e "${HEADER}LINHA COM CORES${ENDC}"
echo -e "${OKBLUE}LINHA COM CORES${ENDC}"
echo -e "${OKGREEN}LINHA COM CORES${ENDC}"
echo -e "${WARNING}LINHA COM CORES${ENDC}"
echo -e "${FAIL}LINHA COM CORES${ENDC}"
echo -e "${BOLD}LINHA COM CORES${ENDC}"
echo -e "${UNDERLINE}LINHA COM CORES${ENDC}"

Mode couleur 88/256

Pour activer le mode de couleur 88/256 pour le texte, l’arrière-plan ou les deux, c’est un peu différent. La combinaison de codes se fait avec 2 séquences différentes :

  1. Pour définir la couleur du texte, le code est 38;5;{0..255}, où {0..255} est l’une des 256 couleurs.
  2. Pour fixer la couleur de l’arrière-plan, le code est 48;5;{0..255}

Consultez la liste complète des 256 couleurs et leurs combinaisons avec la couleur du texte/de l’arrière-plan en exécutant ce script shell :

#!/bin/bash

# This program is free software. It comes without any warranty, to
# the extent permitted by applicable law. You can redistribute it
# and/or modify it under the terms of the Do What The Fuck You Want
# To Public License, Version 2, as published by Sam Hocevar. See
# http://sam.zoy.org/wtfpl/COPYING for more details.

for fgbg in 38 48 ; do # Foreground / Background
    for color in {0..255} ; do # Colors
        # Display the color
        printf "\e[${fgbg};5;%sm  %3s  \e[0m" $color $color
        # Display 6 colors per lines
        if [ $((($color + 1) % 6)) == 4 ] ; then
            echo # New line
        fi
    done
    echo # New line
done

Dans ce cas, vous devez respecter l’ordre dans lequel le trio est combiné, contrairement au mode de couleur 8/16 ci-dessus. Mais peu importe que vous placiez l’arrière-plan avant le premier plan ou vice versa. Vous ne pouvez pas faire quelque chose comme 5;{0..255};38, sinon ce sera mauvais.

Voyez comment se présente la combinaison des couleurs du texte, de l’arrière-plan et de la décoration :

# Recapitulando:
# ESC[...m <- identifica o uso de cor
# \033 <- escape
# 38;5;cor <- Cor do texto
# 48;5;cor <- Cor do fundo
# 0 a 9 <- estilo

echo -en "\033[38;5;135;48;5;114;3m Fundo verde e texto rosa itálico \033[m"
echo -en "\033[48;5;135;38;5;235;1m Fundo rosa e texto preto negrito \033[m"

Mode couleurs vraies 24 bits (16 millions de couleurs)

La syntaxe d’utilisation du mode 24 bits n’est pas très différente de la précédente. Le détail ici est la présence de R;G;B :

ESC[{38|48};2;${red};${green};${blue}m

Exemples :

# Cor do texto
echo -e "\033[38;2;255;0;255mTRUECOLOR\033[0m\n";

# Cor do fundo
echo -e "\033[48;2;255;255;255mTRUECOLOR\033[0m\n";

# Cor do texto e do fundo
echo -e "\033[48;2;255;255;255;38;2;255;0;255mTRUECOLOR\033[0m\n";

# Cor texto, fundo e estilo
echo -e "\033[48;2;255;255;255;38;2;255;0;255;3mTRUECOLOR\033[0m\n"

Regardez à quel point ces dégradés d’arrière-plan sont intéressants.

for i in {16..20} {20..16} ; do echo -e "\033[48;5;${i};1m :o) \033[0m" ; done
for i in {22..27} {27..22} ; do echo -en "\033[48;5;${i};1m \033[0m" ; done


Considérations finales

Comme vous pouvez le constater, ce n’est pas compliqué. Il suffit de savoir utiliser le bon mode de couleur et le bon code d’échappement.

echo -ePour cet article, nous avons beaucoup utilisé la commande, avec son argument qui permet d’utiliser des caractères spéciaux avec des échappements. printf Mais vous pouvez aussi l’utiliser sans problème si vous avez besoin des fonctions avancées de l’outil.

Pour en savoir plus sur echolisez le manuel de commande, qui est très facile à comprendre.

man echo

Printf est un peu plus complexe, mais très intéressant. Il en vaut la peine.

man printf

J’espère que vous avez apprécié.

Vous avez des questions ? Laissez un commentaire.

Voir aussi

  • tput http://linuxcommand.org/lc3_adv_tput.php pour les manipulations du terminal
  • La section sur les couleurs est complétée par les conseils de https://misc.flogisoft.com/bash/tip_colors_and_formatting.
  • https://gist.github.com/XVilka/8346728

Comentários

Plus d'articles

Comment utiliser bc, la calculatrice d’obus

bc = bench calculator (calculatrice de banc).
Si vous ne connaissez pas encore la calculatrice de votre coquille, il est temps d’apprendre à vous en servir, même si son utilisation est très basique.
L’utilisation la plus triviale de ses fonctions devrait déjà répondre à la plupart de vos besoins.
Mais ne vous y trompez pas, il s’agit d’un logiciel très puissant qui doit absolument faire partie de vos préoccupations.

Lire l'article "

Codage/décodage d’URL avec sed

Il existe plusieurs façons d’encoder/décoder les URL.
Les programmeurs utilisent généralement des fonctions prêtes à l’emploi.
Mais savez-vous vraiment ce que font ces fonctions ?
Pour cet article, j’ai choisi sed comme outil pour remplacer les codes et je vous indiquerai les RFC qui traitent du sujet.

Lire l'article "

Comprendre comment personnaliser VIM sur MacOS

Si vous commencez déjà à maîtriser VIM, il est temps de passer aux étapes suivantes.
Dans cet article, je vais vous expliquer comment installer VIM pour MacOS de la manière que je considère la plus propre (vous pouvez vouloir l’installer différemment et c’est très bien) et comment configurer les plugins NerdTree, pour accéder à l’arborescence des répertoires ; Status Tab pour mettre quelques outils supplémentaires à l’écran (et ils rendent VIM très joli) ; et le plugin Git, pour faciliter le contrôle de version sans quitter l’application.
Bonne lecture !

Lire l'article "
bureau-it.com