Liste der ANSI-Farb-Escape-Sequenzen

224

Auf den meisten Terminals ist es möglich, die Ausgabe mithilfe der \033ANSI-Escape-Sequenz einzufärben .

Ich suche nach einer Liste aller unterstützten Farben und Optionen (wie hell und blinkend).

Da es wahrscheinlich Unterschiede zwischen den sie unterstützenden Terminals gibt, interessieren mich hauptsächlich Sequenzen, die von xterm-kompatiblen Terminals unterstützt werden.

DiebMaster
quelle
Eigentlich Sie können Farben in Windows cmd verwenden. stackoverflow.com/questions/41207496/…
Joel
Und von MSDN
Joel

Antworten:

507

Die ANSI-Escape-Sequenzen, nach denen Sie suchen, sind die Teilmenge Select Graphic Rendition. Alle diese haben die Form

\033[XXXm

Dabei XXXhandelt es sich um eine Reihe von durch Semikolons getrennten Parametern.

Um zu sagen, machen Sie Text in C rot, fett und unterstrichen (wir werden unten viele andere Optionen besprechen), den Sie möglicherweise schreiben:

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

In C ++ würden Sie verwenden

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

In Python3 würden Sie verwenden

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

und in Bash würden Sie verwenden

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

Dabei macht der erste Teil den Text rot ( 31), fett ( 1), unterstrichen ( 4) und der letzte Teil löscht all dies ( 0).

Wie in der folgenden Tabelle beschrieben, können Sie eine große Anzahl von Texteigenschaften festlegen, z. B. Fettdruck, Schriftart, Unterstreichung usw. (Ist es nicht albern, dass Sie mit StackOverflow keine richtigen Tabellen in Antworten einfügen können?)

Schrifteffekte

╔══════════╦════════════════════════════════╦═════════════════════════════════════════════════════════════════════════╗
║  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-Bit-Farben

Das hast du schon!

4-Bit-Farben

Die Standards zur Implementierung von Terminalfarben begannen mit eingeschränkten (4-Bit) Optionen. In der folgenden Tabelle sind die RGB-Werte der Hintergrund- und Vordergrundfarben aufgeführt, die von verschiedenen Terminalemulatoren für diese verwendet werden:

Tabelle der von verschiedenen Terminalemulatoren implementierten ANSI-Farben

Mit den oben genannten Informationen können Sie roten Text auf grünem Hintergrund erstellen (aber warum?).

\033[31;42m

11 Farben (Ein Zwischenspiel)

Brent Berlin und Paul Kay verwendeten in ihrem Buch "Grundlegende Farbbegriffe: Ihre Universalität und Entwicklung" Daten aus zwanzig verschiedenen Sprachen aus einer Reihe von Sprachfamilien, um elf mögliche Grundfarbkategorien zu identifizieren: Weiß, Schwarz, Rot, Grün, Gelb, blau, braun, lila, pink, orange und grau.

Berlin und Kay stellten fest, dass in Sprachen mit weniger als den maximal elf Farbkategorien die Farben einem bestimmten Evolutionsmuster folgten. Dieses Muster ist wie folgt:

  1. Alle Sprachen enthalten Begriffe für Schwarz (kühle Farben) und Weiß (helle Farben).
  2. Wenn eine Sprache drei Begriffe enthält, enthält sie einen Begriff für Rot.
  3. Wenn eine Sprache vier Begriffe enthält, enthält sie einen Begriff für entweder grün oder gelb (aber nicht für beide).
  4. Wenn eine Sprache fünf Begriffe enthält, enthält sie Begriffe für Grün und Gelb.
  5. Wenn eine Sprache sechs Begriffe enthält, enthält sie einen Begriff für Blau.
  6. Wenn eine Sprache sieben Begriffe enthält, enthält sie einen Begriff für Braun.
  7. Wenn eine Sprache acht oder mehr Begriffe enthält, enthält sie Begriffe für Lila, Rosa, Orange oder Grau.

Dies mag der Grund sein, warum die Geschichte Beowulf nur die Farben Schwarz, Weiß und Rot enthält. Es kann auch sein, warum die Bibel nicht die Farbe Blau enthält. Homers Odyssee enthält fast 200 Mal Schwarz und ungefähr 100 Mal Weiß. Rot erscheint 15 Mal, während Gelb und Grün nur 10 Mal erscheinen. ( Weitere Informationen hier )

Interessant sind auch die Unterschiede zwischen den Sprachen: Beachten Sie die Fülle unterschiedlicher Farbwörter, die von Englisch und Chinesisch verwendet werden. Ein tieferer Einblick in diese Sprachen zeigt jedoch, dass jede Farbe auf unterschiedliche Weise verwendet wird. ( Weitere Informationen )

Chinesische vs englische Farbnamen.  Bild angepasst von "muyueh.com"

Generell ist die Benennung, Verwendung und Gruppierung von Farben in menschlichen Sprachen faszinierend. Nun zurück zur Show.

8-Bit-Farben (256)

Die Technologie wurde weiterentwickelt und Tabellen mit 256 ausgewählten Farben wurden verfügbar, wie unten gezeigt.

256-Bit-Farbmodus für ANSI-Escape-Sequenzen

Mit diesen oben können Sie rosa Text wie folgt erstellen:

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

Und machen Sie einen blauen Hintergrund am frühen Morgen mit

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

Und natürlich können Sie diese kombinieren:

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

Die 8-Bit-Farben sind wie folgt angeordnet:

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

ALLE FARBEN

Jetzt leben wir in der Zukunft und das gesamte RGB-Spektrum ist verfügbar mit:

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

So können Sie mit rosa Text auf einen bräunlichen Hintergrund setzen

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

Die Unterstützung für "True Color" -Terminals ist hier aufgeführt .

Ein Großteil der oben genannten Informationen stammt aus der Wikipedia-Seite " ANSI-Escape-Code ".

Ein handliches Skript, um sich selbst zu erinnern

Da ich oft in der Lage , sich zu erinnern , zu versuchen , welche Farben sind , was, ich habe ein handliches Skript aufgerufen: ~/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"

Dies wird gedruckt

Einfache ANSI-Farben

Richard
quelle
4
Der vollständige Satz von ANSI-Escape-Codes: ascii-table.com/ansi-escape-sequences-vt-100.php
Formixian
3
@giusti: Beide echo -e "\033[38;05;34;1mHi"und haben echo -e "\033[38;05;34m\033[1mHi"für mich funktioniert, obwohl Anti-Aliasing-Schrifteffekte dazu geführt haben, dass sich das Erscheinungsbild der Farbe in dem Terminal, auf dem ich dies getestet habe, unter Fettdruck leicht geändert hat.
Richard
4
Die SGR ( \033[) - Codes, die mit 38 und 48 beginnen, sollten mit dem ansonsten :als Untertrenner reservierten getrennt werden, obwohl dies aus den Primärquellen unter ecma-international.org/publications/files/ECMA-ST/Ecma nicht ganz klar hervorgeht -048.pdf und itu.int/rec/… . Einige Interpretationen vergessen auch die Farbraum-ID in den Formularen 2(16M-Farbe RGB) / 3(16M-Farbe CMY) / 4(??? CMYK) - z. B. sollte es \033[38:2::255:255:255mfür einen weißen 16M-Vordergrund sein und nicht \033[38:2:255:255:255m!
SlySven
2
Der Grund, warum ich so weitermache, ist, dass ein Projekt- Mudlet , für das ich codiere , beide Formulare verarbeiten muss, und ich bin kürzlich bis zu meinen Ellbogen aufgestanden, damit es besser funktioniert ...
SlySven
4
Ich wollte nur eine Liste der ANSI-Farben finden und verbrachte viel zu viel Zeit damit, Artikel über "grundlegende Farbbegriffe" zu lesen. Danke für die tolle Ablenkung! :)
mzuther
14

Wie wäre es mit:

ECMA-48 - Steuerfunktionen für codierte Zeichensätze, 5. Ausgabe (Juni 1991) - Ein Standard zur Definition der Farbsteuercodes, der offenbar auch von xterm unterstützt wird.

SGR 38 und 48 waren ursprünglich von ECMA-48 reserviert, wurden jedoch einige Jahre später in einer gemeinsamen ITU-, IEC- und ISO-Norm konkretisiert, die aus mehreren Teilen besteht und (unter anderem) den SGR dokumentiert 38/48 Kontrollsequenzen für direkte Farbe und indizierte Farbe :

In dieser Tabelle auf der Wikipedia-Seite befindet sich eine Spalte für xterm für ANSI-Escape-Codes

sinelaw
quelle
4

Es hängt absolut mit Ihrem Terminal zusammen. VTE unterstützt nicht blinken, wenn Sie verwenden gnome-terminal, tilda, guake, terminator, xfce4-terminalund so weiter nach VTE, Sie werden nicht blinken haben.
Wenn Sie Blink auf VTE verwenden oder verwenden möchten, müssen Sie verwenden xterm.
Sie können den Befehl infocmp mit dem Terminalnamen verwenden:

#infocmp vt100 
#infocmp xterm 
#infocmp vte 

Zum Beispiel :

# 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,
Persischer Golf
quelle
VTE 0.52 / gnome-terminal 3.28 unterstützt das Blinken von Text (und funktioniert daher auch in anderen VTE-basierten Emulatoren).
Egmont
1

Wenn Sie mit C # einen Text in das Konsolenfenster (Terminal) drucken, sollten Sie "\ 033" durch "\ x1b " ersetzen . In Visual Basic wäre es Chrw (27) .

HolyRandom
quelle