Codes d'échappement ANSI
Un code d'échappement ANSI est une courte séquence de caractères qu'un programme envoie au terminal pour lui ordonner quelque chose d'autre que d'afficher ces caractères — colorer le texte suivant en rouge, déplacer le curseur de deux lignes vers le haut, effacer l'écran. Le terminal absorbe la séquence et l'exécute, ce qui est pourquoi un fichier journal rempli de codes ressemble à du bruit quand vous l'ouvrez dans un éditeur.
Chaque code ci-dessous commence par l'octet d'échappement et, sauf exception, une accolade ouvrante. La colonne paramètre indique la partie entre l'accolade et la dernière lettre, c'est ce que vous assemblez dans le code ; la première colonne affiche la séquence complète comme vous l'écririez dans un shell.
Le support varie selon les terminaux, et cette page l'indique où c'est important. Les huit couleurs de base et le gras fonctionnent partout ; le clignotement, le double soulignement et true color ne fonctionnent pas.
Anatomie d'une séquence
6Chaque code sur cette page a la même forme : l'octet d'échappement, une accolade ouvrante, des paramètres, et une lettre qui dit quoi en faire.
| Séquence | Paramètre | Effet |
|---|---|---|
| \e | 0x1B | L'octet d'échappement qui commence chaque séquenceÉcrit \e dans un shell, \033 en C, \x1b dans la plupart des langages et \u001b en JSON et Java. |
| \e[ | CSI | Control Sequence Introducer — ouvre une commande paramétrée |
| \e[<n>m | m | Select Graphic Rendition : tout ce qui concerne la couleur et le style finit par m |
| \e[1;4;31m | 1;4;31 | Plusieurs paramètres à la fois, séparés par des points-virgulesGras, souligné et rouge dans une seule séquence — plus court que trois séparées et effet identique. |
| \e[0m | 0 | Efface tous les attributs pour revenir au défaut du terminalÉmettez ceci à la fin de la sortie coloriée. Un programme qui s'arrête sans l'envoyer laisse l'invite de l'utilisateur coloriée. |
| \e]8;;URL\e\\text\e]8;;\e\\ | OSC 8 | Un lien hypertexte cliquable, dans les terminaux qui le supportentUne séquence OSC plutôt que CSI, et terminée par ESC \ au lieu d'une lettre. |
Attributs de texte
14Le support est inégal en dessous des cinq premiers. Le clignotement est ignoré presque partout, et quelques terminaux affichent le faiblissement et l'italique de la même façon.
| Séquence | Paramètre | Effet |
|---|---|---|
| \e[1m | 1 | Gras ou brillant |
| \e[2m | 2 | Faible |
| \e[3m | 3 | Italique |
| \e[4m | 4 | Soulignement |
| \e[5m | 5 | ClignotementLargement ignoré ; la plupart des terminaux modernes l'affichent comme du texte normal. |
| \e[7m | 7 | Inverse : échange le premier plan et l'arrière-plan |
| \e[8m | 8 | Caché : le texte existe mais n'est pas dessiné |
| \e[9m | 9 | Barré |
| \e[21m | 21 | Double soulignementCertains terminaux lisent 21 comme « annuler gras ». |
| \e[22m | 22 | Intensité normale : annule gras et faible |
| \e[23m | 23 | Annule italique |
| \e[24m | 24 | Annule soulignement |
| \e[27m | 27 | Annule inverse |
| \e[29m | 29 | Annule barré |
Couleur du texte
17Les huit couleurs standard et leurs homologues brillants. Ce que le lecteur voit vraiment dépend du thème du terminal — « rouge » est une position dans une palette, pas une valeur hex.
| Séquence | Paramètre | Effet |
|---|---|---|
| \e[30m | 30 | Texte noir |
| \e[31m | 31 | Texte rouge |
| \e[32m | 32 | Texte vert |
| \e[33m | 33 | Texte jaune |
| \e[34m | 34 | Texte bleu |
| \e[35m | 35 | Texte magenta |
| \e[36m | 36 | Texte cyan |
| \e[37m | 37 | Texte blanc |
| \e[39m | 39 | Retour à la couleur de texte par défaut |
| \e[90m | 90 | Texte noir brillant |
| \e[91m | 91 | Texte rouge brillant |
| \e[92m | 92 | Texte vert brillant |
| \e[93m | 93 | Texte jaune brillant |
| \e[94m | 94 | Texte bleu brillant |
| \e[95m | 95 | Texte magenta brillant |
| \e[96m | 96 | Texte cyan brillant |
| \e[97m | 97 | Texte blanc brillant |
Couleur d'arrière-plan
17Même palette décalée de dix. Un code d'arrière-plan colore la cellule derrière le texte et reste en vigueur jusqu'à réinitialisation.
| Séquence | Paramètre | Effet |
|---|---|---|
| \e[40m | 40 | Arrière-plan noir |
| \e[41m | 41 | Arrière-plan rouge |
| \e[42m | 42 | Arrière-plan vert |
| \e[43m | 43 | Arrière-plan jaune |
| \e[44m | 44 | Arrière-plan bleu |
| \e[45m | 45 | Arrière-plan magenta |
| \e[46m | 46 | Arrière-plan cyan |
| \e[47m | 47 | Arrière-plan blanc |
| \e[49m | 49 | Retour à l'arrière-plan par défaut |
| \e[100m | 100 | Arrière-plan noir brillant |
| \e[101m | 101 | Arrière-plan rouge brillant |
| \e[102m | 102 | Arrière-plan vert brillant |
| \e[103m | 103 | Arrière-plan jaune brillant |
| \e[104m | 104 | Arrière-plan bleu brillant |
| \e[105m | 105 | Arrière-plan magenta brillant |
| \e[106m | 106 | Arrière-plan cyan brillant |
| \e[107m | 107 | Arrière-plan blanc brillant |
256 couleurs et true color
4Deux extensions du même mécanisme SGR. Les deux sont largement mais pas universellement supportées ; un terminal qui ne les comprend pas ignore généralement la séquence au lieu de l'imprimer.
| Séquence | Paramètre | Effet |
|---|---|---|
| \e[38;5;<n>m | 38;5;n | Texte en couleur palette n, 0–2550–15 sont les seize ci-dessus, 16–231 un cube couleur 6×6×6, 232–255 une rampe niveaux de gris. |
| \e[48;5;<n>m | 48;5;n | Arrière-plan en couleur palette n, 0–255 |
| \e[38;2;<r>;<g>;<b>m | 38;2;r;g;b | Texte en couleur 24-bit exacte |
| \e[48;2;<r>;<g>;<b>m | 48;2;r;g;b | Arrière-plan en couleur 24-bit exacte |
Mouvements du curseur
11Les mouvements ne font pas défiler et ne reviennent pas à la ligne : un curseur déjà en haut de l'écran ignore une demande d'aller plus haut.
| Séquence | Paramètre | Effet |
|---|---|---|
| \e[<n>A | A | Vers le haut de n lignes |
| \e[<n>B | B | Vers le bas de n lignes |
| \e[<n>C | C | Vers la droite de n colonnes |
| \e[<n>D | D | Vers la gauche de n colonnes |
| \e[<n>E | E | Vers le bas de n lignes, au début de la ligne |
| \e[<n>F | F | Vers le haut de n lignes, au début de la ligne |
| \e[<n>G | G | À la colonne n de la ligne actuelle |
| \e[<row>;<col>H | H | À une ligne et colonne absolues, comptées à partir de 1 |
| \e[s | s | Mémorise la position du curseur |
| \e[u | u | Revient à la position mémorisée |
| \e[6n | 6n | Demande au terminal où se trouve le curseurLe terminal répond sur l'entrée standard sous la forme \e[<ligne>;<col>R — la seule séquence ici qui produit une réponse. |
Effaçage
7L'effaçage écrit des espaces avec la couleur d'arrière-plan actuelle ; il ne déplace pas le curseur.
| Séquence | Paramètre | Effet |
|---|---|---|
| \e[0J | 0J | Efface du curseur à la fin de l'écran |
| \e[1J | 1J | Efface du début de l'écran au curseur |
| \e[2J | 2J | Efface tout l'écranLe curseur reste où il était, c'est pourquoi c'est généralement associé à \e[H. |
| \e[3J | 3J | Efface aussi l'historique de défilement |
| \e[0K | 0K | Efface du curseur à la fin de la ligne |
| \e[1K | 1K | Efface du début de la ligne au curseur |
| \e[2K | 2K | Efface toute la ligne\r\e[2K est le moyen habituel de redessiner une ligne de progression sur place. |
Modes du terminal
8Modes privés, marqués par un point d'interrogation. Ils changent le comportement du terminal plutôt que l'apparence d'un morceau de texte, et chacun doit être réactivé avant que le programme se termine.
| Séquence | Paramètre | Effet |
|---|---|---|
| \e[?25l | ?25l | Cache le curseur |
| \e[?25h | ?25h | Affiche le curseur |
| \e[?1049h | ?1049h | Bascule vers l'écran alternatifCe qu'un programme plein écran utilise pour que l'historique du shell survive en dessous. |
| \e[?1049l | ?1049l | Revient à l'écran principal |
| \e[?7h | ?7h | Revenir à la ligne pour les longues lignes au bord droit |
| \e[?7l | ?7l | Laisse les longues lignes déborder au bord droit |
| \e[?2004h | ?2004h | Active le collage entre crochetsLe texte collé arrive enveloppé dans \e[200~ et \e[201~, pour que le shell distingue la saisie du collage. |
| \e[?2004l | ?2004l | Désactive le collage entre crochets |