Auf den meisten Terminals ist es möglich, die Ausgabe mithilfe der \033
ANSI-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.
colors
terminal
ansi-escape
DiebMaster
quelle
quelle
Antworten:
Die ANSI-Escape-Sequenzen, nach denen Sie suchen, sind die Teilmenge Select Graphic Rendition. Alle diese haben die Form
Dabei
XXX
handelt 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:
In C ++ würden Sie verwenden
In Python3 würden Sie verwenden
und in Bash würden Sie verwenden
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
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:
Mit den oben genannten Informationen können Sie roten Text auf grünem Hintergrund erstellen (aber warum?).
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:
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 )
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.
Mit diesen oben können Sie rosa Text wie folgt erstellen:
Und machen Sie einen blauen Hintergrund am frühen Morgen mit
Und natürlich können Sie diese kombinieren:
Die 8-Bit-Farben sind wie folgt angeordnet:
ALLE FARBEN
Jetzt leben wir in der Zukunft und das gesamte RGB-Spektrum ist verfügbar mit:
So können Sie mit rosa Text auf einen bräunlichen Hintergrund setzen
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
:Dies wird gedruckt
quelle
echo -e "\033[38;05;34;1mHi"
und habenecho -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.\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 Formularen2
(16M-Farbe RGB) /3
(16M-Farbe CMY) /4
(??? CMYK) - z. B. sollte es\033[38:2::255:255:255m
für einen weißen 16M-Vordergrund sein und nicht\033[38:2:255:255:255m
!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
quelle
Es gibt einige interessantere zusammen mit verwandten Informationen.
quelle
Es hängt absolut mit Ihrem Terminal zusammen. VTE unterstützt nicht blinken, wenn Sie verwenden
gnome-terminal
,tilda
,guake
,terminator
,xfce4-terminal
und 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:
Zum Beispiel :
quelle
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) .
quelle