Drucken von farbigem Text mit Echo

Ich weiß, dass zum Drucken eines farbigen Textes mit Echo, beispielsweise 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 für die rote Farbe ist und die Anzahl der anderen Farben wie folgt lautet:

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 ist die Zahl 40 bis 47

Meine Frage lautet: Was bedeutet \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.

Kommentare

  • In Im Allgemeinen entkommen Sie Zeichen, die im aktuellen technischen Kontext eine besondere Bedeutung haben. Beispielsweise werden Zeichenfolgen häufig in Anführungszeichen geschrieben, " wie folgt: ". Wenn Sie jedoch Anführungszeichen in einer Zeichenfolge verwenden möchten, müssen Sie diese Zeichen maskieren, damit sie wörtlich und nicht als Trennzeichen interpretiert werden. Beispiel: echo "She said \"Hi\"" In diesem Fall (Ihre Frage) ) müssen Sie ' auf eine bessere Antwort warten.
  • hermannn.com/programs/terminal_fonts

Antwort

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

Genauer gesagt die

ist der „ Control Sequence Introducer

Geben Sie man console_codes in fast jeder * nix-Distribution, um die Codes und einige Dokumente anzuzeigen.

Kommentare

  • man 4 console_code nicht man console_code: In meinem Ubuntu
  • Der Name der Handbuchseite endet mit einem " s " also " man console_codes " sollte die richtige Seite aufrufen.

Antwort

Um genau zu sein, werden 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 so, 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 ..)

Antwort

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

Geben Sie dies zunächst auf Ihrer 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 normal druckbare Zeichen, sodass Sie die farbige Zeichenfolge in Rot sehen. Der Typ behält diese Farbe bei, bis Sie zurückkehren, indem Sie Folgendes eingeben:

Dies sind Escape-Codes zum Festlegen der Farbmodi im Terminal. Wenn sie nur mit regulären Zeichen gedruckt werden, sehen sie so aus.

Antwort

\e ist eine Abkürzung für das Escape-Zeichen. Die <ESC>[ und die m sind die Marker für den Anfang 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. Cursor auf Zeile bewegen; bis zum Zeilenende löschen, Cursor auf gespeichert zurücksetzen Ort usw.).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.