it-swarm.com.de

Drucken von farbigem Text mit Echo

Ich weiß, dass zum Drucken eines farbigen Textes mit Echo, zum Beispiel roter Farbe, der Code lautet: echo -e "\e[1;31m This is red text \e[0m"
und ich weiß, dass in diesem Beispiel 31 ein Code der roten Farbe ist und die Anzahl der anderen Farben:

Black       0;30     Dark Gray     1;30
Blue        0;34     Light Blue    1;34
Green       0;32     Light Green   1;32
Cyan        0;36     Light Cyan    1;36
Red         0;31     Light Red     1;31
Purple      0;35     Light Purple  1;35
Brown       0;33     Yellow        1;33
Light Gray  0;37     White         1;37

und für Hintergrundfarben beträgt die Zahl 40 bis 47

meine Frage lautet: Was macht \e und [ und m (nach 31) genau hier bedeuten?
Ich habe in der Manpage gelesen, dass\e Flucht ist, aber ich habe nicht verstanden, was es bedeutet.

25
M0εiπ

Sie sind Teil der 'Sequenzelemente' von ANSI-Escape-Sequenzen auch bekannt als ECMA-48 CSI-Sequenzen, die ursprünglich 1976 übernommen wurden

Genauer gesagt die [ ist der ' Control Sequence Introducer '

Art man console_codes in fast jeder * nix Distribution, um die Codes und einige Dokumente zu sehen.

13

Um genau zu sein, sind Farbcodes wie folgt definiert:

Opening
RED= "\033[31m" or "\e[1;31m"
CYAN="\033[36m" or "\e[1;31m"

Closing = "\033[m" or "\e[0m"

Im Grunde ist es nur die Art und Weise, wie verschiedene Terminals Farbcodes interpretieren und Sie Ihren Text innerhalb dieser Elemente beschriften. Es ist eine seltsame Art, dem Terminal klar zu machen, was Sie meinen (wie HexCodes oder Binary ..)

4
AnBisw

\e ist eine Abkürzung für das Escape-Zeichen. das <ESC>[ und m sind die Marker für den Beginn und das Ende von ANSI-Farbkontrollsequenzen, die eine Teilmenge der sequenzierten ANSI-Terminalsteuerung sind. Die meisten von ihnen beginnen mit <ESC>[, gefolgt von einer Zahl, gefolgt von einem Buchstaben, der angibt, welche Funktion implementiert wird (z. B. den Cursor zur Zeile bewegen; zum Zeilenende löschen, den Cursor zum gespeicherten Ort zurücksetzen usw.).

2
DopeGhoti

Ich habe eine nette Erklärung gefunden hier (zumindest schön für mich : -) ). Ich bin mir nicht sicher, ob es für Sie nützlich sein wird.

Geben Sie zunächst Folgendes in Ihre Konsole ein:

echo "^[[0;31;40mIn Color"

Das erste Zeichen ist ein Escape-Zeichen, das wie zwei Zeichen aussieht: ^ und [. Um dies drucken zu können, müssen Sie STRG + V und dann die ESC-Taste drücken. Alle anderen Zeichen sind normale druckbare Zeichen, sodass Sie die farbige Zeichenfolge in Rot sehen. Der Typ behält diese Farbe, bis Sie zurückkehren, indem Sie Folgendes eingeben:

Sie sind Escape-Codes zum Einstellen der Farbmodi im Terminal. Ist das nur so, wenn sie mit normalen Zeichen gedruckt werden, sehen sie so aus.

2
BorrajaX