Question

Sur la plupart des terminaux, il est possible de coloriser sortie en utilisant la séquence d'échappement \033 ANSI.

Je recherche une liste de toutes les couleurs et options prises en charge (comme lumineux et clignotant).

Comme il y a probablement des différences entre les terminaux qui les soutiennent, je suis principalement intéressé dans des séquences prises en charge par les terminaux compatibles xterm.

Était-ce utile?

La solution

Les séquences d'échappement ANSI que vous recherchez sont le sous-ensemble graphique Rendition. Tous ces éléments ont la forme

\033[XXXm

XXX est une série de paramètres séparés des points-virgules.

Pour dire, le texte marque rouge, gras et souligné (nous allons discuter beaucoup d'autres options ci-dessous) en C, vous pouvez écrire:

printf("\033[31;1;4mHello\033[0m");

En C ++ vous utiliseriez

std::cout<<"\033[31;1;4mHello\033[0m";

Dans python3 vous utiliseriez

print("\033[31;1;4mHello\033[0m")

et Bash vous utiliseriez

echo -e "\033[31;1;4mHello\033[0m"

où la première partie rend le texte rouge (31), gras (1), a souligné (4) et la dernière partie efface tout cela (0).

Comme décrit dans le tableau ci-dessous, il y a un grand nombre de propriétés de texte que vous pouvez définir, comme l'audace, la police, soulignement, etc.. (Est-il pas stupide StackOverflow ne vous permet pas de mettre les tables appropriées dans les réponses?)

Effets de caractères

╔══════════╦════════════════════════════════╦═════════════════════════════════════════════════════════════════════════╗
║  Code    ║             Effect             ║                                   Note                                  ║
╠══════════╬════════════════════════════════╬═════════════════════════════════════════════════════════════════════════╣
║ 0        ║  Reset / Normal                ║  all attributes off                                                     ║
║ 1        ║  Bold or increased intensity   ║                                                                         ║
║ 2        ║  Faint (decreased intensity)   ║  Not widely supported.                                                  ║
║ 3        ║  Italic                        ║  Not widely supported. Sometimes treated as inverse.                    ║
║ 4        ║  Underline                     ║                                                                         ║
║ 5        ║  Slow Blink                    ║  less than 150 per minute                                               ║
║ 6        ║  Rapid Blink                   ║  MS-DOS ANSI.SYS; 150+ per minute; not widely supported                 ║
║ 7        ║  [[reverse video]]             ║  swap foreground and background colors                                  ║
║ 8        ║  Conceal                       ║  Not widely supported.                                                  ║
║ 9        ║  Crossed-out                   ║  Characters legible, but marked for deletion.  Not widely supported.    ║
║ 10       ║  Primary(default) font         ║                                                                         ║
║ 11–19    ║  Alternate font                ║  Select alternate font `n-10`                                           ║
║ 20       ║  Fraktur                       ║  hardly ever supported                                                  ║
║ 21       ║  Bold off or Double Underline  ║  Bold off not widely supported; double underline hardly ever supported. ║
║ 22       ║  Normal color or intensity     ║  Neither bold nor faint                                                 ║
║ 23       ║  Not italic, not Fraktur       ║                                                                         ║
║ 24       ║  Underline off                 ║  Not singly or doubly underlined                                        ║
║ 25       ║  Blink off                     ║                                                                         ║
║ 27       ║  Inverse off                   ║                                                                         ║
║ 28       ║  Reveal                        ║  conceal off                                                            ║
║ 29       ║  Not crossed out               ║                                                                         ║
║ 30–37    ║  Set foreground color          ║  See color table below                                                  ║
║ 38       ║  Set foreground color          ║  Next arguments are `5;n` or `2;r;g;b`, see below                       ║
║ 39       ║  Default foreground color      ║  implementation defined (according to standard)                         ║
║ 40–47    ║  Set background color          ║  See color table below                                                  ║
║ 48       ║  Set background color          ║  Next arguments are `5;n` or `2;r;g;b`, see below                       ║
║ 49       ║  Default background color      ║  implementation defined (according to standard)                         ║
║ 51       ║  Framed                        ║                                                                         ║
║ 52       ║  Encircled                     ║                                                                         ║
║ 53       ║  Overlined                     ║                                                                         ║
║ 54       ║  Not framed or encircled       ║                                                                         ║
║ 55       ║  Not overlined                 ║                                                                         ║
║ 60       ║  ideogram underline            ║  hardly ever supported                                                  ║
║ 61       ║  ideogram double underline     ║  hardly ever supported                                                  ║
║ 62       ║  ideogram overline             ║  hardly ever supported                                                  ║
║ 63       ║  ideogram double overline      ║  hardly ever supported                                                  ║
║ 64       ║  ideogram stress marking       ║  hardly ever supported                                                  ║
║ 65       ║  ideogram attributes off       ║  reset the effects of all of 60-64                                      ║
║ 90–97    ║  Set bright foreground color   ║  aixterm (not in standard)                                              ║
║ 100–107  ║  Set bright background color   ║  aixterm (not in standard)                                              ║
╚══════════╩════════════════════════════════╩═════════════════════════════════════════════════════════════════════════╝

2 bits Couleurs

Vous avez ce déjà!

4 bits Couleurs

Les normes de mise en œuvre des couleurs du terminal a commencé avec des options (4 bits) limité. Le tableau ci-dessous répertorie les valeurs RVB des couleurs de fond et de premier plan utilisés pour ces par une variété de terminaux émulateurs:

En utilisant ce qui précède, vous pouvez faire du texte en rouge sur un fond vert à l'aide (mais pourquoi?):

\033[31;42m

11 couleurs (un interlude)

Dans leur livre « Conditions de base Couleur: Leur Universalité et Evolution », Brent Berlin et Paul Kay a utilisé les données recueillies dans vingt langues différentes d'une gamme de familles linguistiques pour identifier les onze catégories de couleurs de base possibles: blanc, noir, rouge, vert , jaune, bleu, brun, violet, rose, orange, et gris.

Berlin et Kay a constaté que, dans les langues de moins que le maximum onze catégories de couleurs, les couleurs ont suivi un schéma d'évolution spécifique. Ce modèle est le suivant:

  1. Toutes les langues contiennent des termes pour le noir (couleurs froides) et blanc (couleurs vives).
  2. Si une langue contient trois termes, il contient un terme pour le rouge.
  3. Si une langue contient quatre termes, il contient un terme vert ou jaune (mais pas les deux).
  4. Si une langue contient cinq termes, il contient des termes à la fois vert et jaune.
  5. Si une langue contient six termes, il contient un terme pour le bleu.
  6. Si une langue contient des termes sept, il contient un terme pour le brun.
  7. Si une langue contient huit ou plusieurs termes, il contient des termes de pourpre, rose, orange ou gris.

Cela peut être la raison pour laquelle l'histoire Beowulf ne contient que les couleurs noir, blanc et rouge. Il peut également être pourquoi Bible ne contient pas la couleur bleue. Homer Odyssey contient noir près de 200 fois et blanc environ 100 fois. Rouge apparaît 15 fois, alors que apparaissent en jaune et vert seulement 10 fois. ( Plus d'informations ici )

Les différences entre les langues sont également intéressantes: note la profusion de mots de couleurs distincts utilisés par l'anglais par rapport chinois. Cependant, en creusant plus profondément dans ces langues montre que chaque utilise la couleur de façon distincte. ( Plus d'informations )

D'une manière générale, la dénomination, l'utilisation et le regroupement de couleurs in langues humaines est fascinante. Maintenant, revenons à l'émission.

8 bits (256) des couleurs

technologie de pointe, et des tables de 256 couleurs présélectionnées est devenu disponible, comme indiqué ci-dessous.

L'utilisation de ces ci-dessus, vous pouvez faire le texte rose comme ceci:

\033[38;5;206m     #That is, \033[38;5;<FG COLOR>m

Et faire un fond bleu tôt le matin en utilisant

\033[48;5;57m      #That is, \033[48;5;<BG COLOR>m

Et, bien sûr, vous pouvez combiner ces:

\033[38;5;206;48;5;57m

Les couleurs de 8 bits sont agencées comme ceci:

0x00-0x07:  standard colors (same as the 4-bit colours)
0x08-0x0F:  high intensity colors
0x10-0xE7:  6 × 6 × 6 cube (216 colors): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5)
0xE8-0xFF:  grayscale from black to white in 24 steps

TOUS LES COULEURS

Maintenant, nous vivons à l'avenir, et le spectre RVB est disponible en utilisant:

\033[38;2;<r>;<g>;<b>m     #Select RGB foreground color
\033[48;2;<r>;<g>;<b>m     #Select RGB background color

Vous pouvez mettre du texte rosâtre sur un fond brun avec

\033[38;2;255;82;197;48;2;155;106;0mHello

Prise en charge des terminaux "true color" est la liste .

Une grande partie de ce qui précède est tirée de la page Wikipedia " le code ANSI escape".

Un script pratique pour vous rappeler

Depuis que je suis souvent en position d'essayer de se rappeler ce que les couleurs sont ce que j'ai un script pratique appelé: ~/bin/ansi_colours:

#!/usr/bin/python

print "\\033[XXm"

for i in range(30,37+1):
    print "\033[%dm%d\t\t\033[%dm%d" % (i,i,i+60,i+60);

print "\033[39m\\033[39m - Reset colour"
print "\\033[2K - Clear Line"
print "\\033[<L>;<C>H OR \\033[<L>;<C>f puts the cursor at line L and column C."
print "\\033[<N>A Move the cursor up N lines"
print "\\033[<N>B Move the cursor down N lines"
print "\\033[<N>C Move the cursor forward N columns"
print "\\033[<N>D Move the cursor backward N columns"
print "\\033[2J Clear the screen, move to (0,0)"
print "\\033[K Erase to end of line"
print "\\033[s Save cursor position"
print "\\033[u Restore cursor position"
print " "
print "\\033[4m  Underline on"
print "\\033[24m Underline off"
print "\\033[1m  Bold on"
print "\\033[21m Bold off"

Cette impression

Autres conseils

Que diriez-vous:

ECMA-48 - Fonctions de contrôle pour Coded jeux de caractères, 5ème édition (Juin 1991) - Une norme définissant les codes de contrôle de la couleur, qui est apparemment également soutenu par xterm.

SGR 38 et 48 ont été initialement réservés par ECMA-48, mais ont été étoffés quelques années plus tard dans une conjointe UIT, CEI et la norme ISO, qui se décline en plusieurs parties et qui (parmi beaucoup d'autres choses) documents les séquences de contrôle SGR 38/48 pour couleur directe et couleur indexée :

Il y a une colonne pour xterm dans ce tableau sur la page Wikipedia pour les codes d'échappement ANSI

Il est lié absolument à votre terminal. TEV ne supporte pas cligner des yeux, si vous utilisez gnome-terminal, tilda, guake, terminator, xfce4-terminal et ainsi de suite selon TEV, vous n'aurez pas cligner des yeux.
Si vous utilisez ou souhaitez utiliser clignotent sur TEV, vous devez utiliser xterm.
Vous pouvez utiliser la commande infocmp avec le nom du terminal:

#infocmp vt100 
#infocmp xterm 
#infocmp vte 

Par exemple:

# infocmp vte
#   Reconstructed via infocmp from file: /usr/share/terminfo/v/vte
vte|VTE aka GNOME Terminal,
    am, bce, mir, msgr, xenl,
    colors#8, cols#80, it#8, lines#24, ncv#16, pairs#64,
    acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
    bel=^G, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[2J,
    cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr,
    cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
    cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
    cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
    dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J,
    el=\E[K, enacs=\E)0, home=\E[H, hpa=\E[%i%p1%dG, ht=^I,
    hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m,
    is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8,
    kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~,
    kLFT=\E[1;2D, kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\E[1;2C,
    kb2=\E[E, kbs=\177, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB,
    kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, kend=\EOF, kf1=\EOP,
    kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[1;2P,
    kf14=\E[1;2Q, kf15=\E[1;2R, kf16=\E[1;2S, kf17=\E[15;2~,
    kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~,
    kf21=\E[20;2~, kf22=\E[21;2~, kf23=\E[23;2~,
    kf24=\E[24;2~, kf25=\E[1;5P, kf26=\E[1;5Q, kf27=\E[1;5R,
    kf28=\E[1;5S, kf29=\E[15;5~, kf3=\EOR, kf30=\E[17;5~,
    kf31=\E[18;5~, kf32=\E[19;5~, kf33=\E[20;5~,
    kf34=\E[21;5~, kf35=\E[23;5~, kf36=\E[24;5~,
    kf37=\E[1;6P, kf38=\E[1;6Q, kf39=\E[1;6R, kf4=\EOS,
    kf40=\E[1;6S, kf41=\E[15;6~, kf42=\E[17;6~,
    kf43=\E[18;6~, kf44=\E[19;6~, kf45=\E[20;6~,
    kf46=\E[21;6~, kf47=\E[23;6~, kf48=\E[24;6~,
    kf49=\E[1;3P, kf5=\E[15~, kf50=\E[1;3Q, kf51=\E[1;3R,
    kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~,
    kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~,
    kf58=\E[21;3~, kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~,
    kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~,
    kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khome=\EOH,
    kich1=\E[2~, kind=\E[1;2B, kmous=\E[M, knp=\E[6~,
    kpp=\E[5~, kri=\E[1;2A, kslt=\E[4~, meml=\El, memu=\Em,
    op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, ritm=\E[23m,
    rmacs=^O, rmam=\E[?7l, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l,
    rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, rs1=\Ec,
    rs2=\E7\E[r\E8\E[m\E[?7h\E[!p\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?25h,
    sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
    sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p5%t;2%;%?%p7%t;8%;%?%p1%p3%|%t;7%;m%?%p9%t\016%e\017%;,
    sgr0=\E[0m\017, sitm=\E[3m, smacs=^N, smam=\E[?7h,
    smcup=\E7\E[?47h, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m,
    smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
    u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%i%p1%dd,

Pour ceux qui ne reçoivent pas des résultats appropriés autres que les langues mentionnées, si vous utilisez C # pour imprimer un texte dans la console fenêtre vous devez le remplacer (terminal) « \ 033 » "\ x1b ". il en Visual Basic est ChrW (27) .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top