Les caractères d'échappement et les séquences d'échappement ( ou codes de contrôle ANSI1) ) permettent d'activer des fonctions ou des traitements standardisés coté terminal. Aujourd'hui les terminaux virtuels émulent ces traitements (changement de la police d'affichage, de la couleurs des caractères, émission de bips sonores, contrôle du curseur etc).
La séquence SGR 2) est la séquence de contrôle permettant d'indiquer au terminal quel rendu graphique utiliser. Plusieurs attributs peuvent être définis dans la même séquence séparés par le caractère ;
. Ils restent actifs jusqu'à ce qu'une autre séquence de contrôle les remplace.
La séquence commence par le caractère ECHAP (033 en octal) suivi d'un crochet ouvrant [
et d'un ou plusieurs attributs (nombres) séparés par des points virgules ;
et se termine par le caractère m
qui active le traitement de la commande côté terminal.
La syntaxe aura donc la forme suivante:
\033[attr1;attr2;attr3;m
Quelques codes usuels pour les attributs de séquence SGR
Valeur | Commande |
---|---|
0 | RAZ, affichage normal, tous les attributs off |
1 | gras, augmenter l'intensité, emphasis |
2 | diminuer l'intensité |
3 | italic, ou annuler clignoter |
4 | souligner |
5 | clignotement lent |
6 | Clignotement rapide |
7 | Iversion vidéo (echange couleurs arrière et avant plan |
8 | Masquer |
. . . |
La spécification originale ne proposait que 8 couleurs, les codes réservés sont les suivants:
Couleur | code Arrière plan (BG) | code Texte (FG) |
---|---|---|
Noir | 30 | 40 |
Rouge | 31 | 41 |
Vert | 32 | 42 |
Jaune | 33 | 43 |
Bleu | 34 | 44 |
Magenta | 35 | 45 |
Cyan | 36 | 46 |
Gris | 37 | 47 |
La séquence SGR ci-dessous active l'écriture soulignée, Texte gris, fond noir et:
echo -e "\033[4;37;40m soulignez moi \033[0m" # équivalents echo -e "\E[4;37;40m soulignez moi \E[0m" echo -e "\e[4;37;40m soulignez moi \e[0m"
Remarque: on utilise echo avec l'option -e pour interpréter le méta-caractère ECHAP préalablement échappé par le contre oblique.