ANSI-Escape-Codes
Ein ANSI-Escape-Code ist eine kurze Zeichenfolge, die ein Programm ausgibt, um dem Terminal etwas anderes anzuweisen, als diese Zeichen anzuzeigen — die nächsten Wörter rot färben, den Cursor um zwei Zeilen nach oben verschieben, den Bildschirm löschen. Das Terminal nimmt die Sequenz auf und führt sie aus, darum sieht eine Protokolldatei voll davon im Editor aus wie Rauschen.
Jeder Code unten beginnt mit dem Escape-Byte und — mit einer Ausnahme — einer öffnenden Klammer. Die Spalte Parameter gibt den Teil zwischen Klammer und Endbuchstabe an, d. h. das, was Sie im Code zusammensetzen; die erste Spalte zeigt die gesamte Sequenz, wie Sie sie in einer Shell schreiben würden.
Die Unterstützung variiert zwischen Terminals, und auf dieser Seite wird angegeben, wo dies wichtig ist. Die acht Grundfarben und fett funktionieren überall; Blinken, Doppelunterstrich und echte Farbe hingegen nicht.
Anatomie einer Sequenz
6Jeder Code auf dieser Seite hat die gleiche Form: Escape-Byte, öffnende Klammer, Parameter und ein Buchstabe, der sagt, was damit zu tun ist.
| Sequenz | Parameter | Wirkung |
|---|---|---|
| \e | 0x1B | Das Escape-Byte, das jede Sequenz startetIn einer Shell geschrieben als \e, in C als \033, in den meisten Sprachen als \x1b und in JSON und Java als \u001b. |
| \e[ | CSI | Control Sequence Introducer — öffnet einen parametrisierten Befehl |
| \e[<n>m | m | Select Graphic Rendition: Alles zu Farbe und Stil endet mit m |
| \e[1;4;31m | 1;4;31 | Mehrere Parameter auf einmal, durch Semikola getrenntFett, unterstrichen und rot in einer Sequenz — kürzer als drei separate und identisch in der Wirkung. |
| \e[0m | 0 | Setzt alle Attribute auf die Terminal-Vorgabe zurückGeben Sie dies am Ende der farbigen Ausgabe aus. Ein Programm, das beendet wird, ohne es zu geben, hinterlässt der Eingabeaufforderung des Benutzers farbig. |
| \e]8;;URL\e\\text\e]8;;\e\\ | OSC 8 | Ein anklickbarer Hyperlink in Terminals, die ihn unterstützenEine OSC-Sequenz statt einer CSI-Sequenz und mit ESC \ beendet statt mit einem Buchstaben. |
Textattribute
14Die Unterstützung ist unter den ersten fünf ungleichmäßig. Blinken wird fast überall ignoriert, und ein paar Terminals rendern dim und kursiv identisch.
| Sequenz | Parameter | Wirkung |
|---|---|---|
| \e[1m | 1 | Fett oder hell |
| \e[2m | 2 | Gedimmt |
| \e[3m | 3 | Kursiv |
| \e[4m | 4 | Unterstrichen |
| \e[5m | 5 | BlinkenWird weitgehend ignoriert; die meisten modernen Terminals rendern es als Klartext. |
| \e[7m | 7 | Umkehr: tauscht Vordergrund und Hintergrund |
| \e[8m | 8 | Verborgen: der Text ist dort, wird aber nicht gezeichnet |
| \e[9m | 9 | Durchgestrichen |
| \e[21m | 21 | Doppelter UnterstrichEinige Terminals lesen 21 als „fett aus“. |
| \e[22m | 22 | Normale Intensität: hebt fett und gedimmt auf |
| \e[23m | 23 | Hebt kursiv auf |
| \e[24m | 24 | Hebt Unterstrich auf |
| \e[27m | 27 | Hebt Umkehr auf |
| \e[29m | 29 | Hebt Durchstrich auf |
Textfarbe
17Die acht Standardfarben und ihre hellen Gegenstücke. Was der Leser tatsächlich sieht, ist die Interpretation durch sein Terminal-Thema — „rot“ ist ein Platz in einer Palette, kein Hexwert.
| Sequenz | Parameter | Wirkung |
|---|---|---|
| \e[30m | 30 | Schwarzer Text |
| \e[31m | 31 | Roter Text |
| \e[32m | 32 | Grüner Text |
| \e[33m | 33 | Gelber Text |
| \e[34m | 34 | Blauer Text |
| \e[35m | 35 | Magenta Text |
| \e[36m | 36 | Cyan Text |
| \e[37m | 37 | Weißer Text |
| \e[39m | 39 | Zurück zur Standard-Textfarbe |
| \e[90m | 90 | Helles Schwarzer Text |
| \e[91m | 91 | Helles Roter Text |
| \e[92m | 92 | Helles Grüner Text |
| \e[93m | 93 | Helles Gelber Text |
| \e[94m | 94 | Helles Blauer Text |
| \e[95m | 95 | Helles Magenta Text |
| \e[96m | 96 | Helles Cyan Text |
| \e[97m | 97 | Helles Weißer Text |
Hintergrundfarbe
17Die gleiche Palette um zehn verschoben. Ein Hintergrund-Code färbt die Zelle hinter dem Text und bleibt wirksam, bis er zurückgesetzt wird.
| Sequenz | Parameter | Wirkung |
|---|---|---|
| \e[40m | 40 | Schwarzer Hintergrund |
| \e[41m | 41 | Roter Hintergrund |
| \e[42m | 42 | Grüner Hintergrund |
| \e[43m | 43 | Gelber Hintergrund |
| \e[44m | 44 | Blauer Hintergrund |
| \e[45m | 45 | Magenta Hintergrund |
| \e[46m | 46 | Cyan Hintergrund |
| \e[47m | 47 | Weißer Hintergrund |
| \e[49m | 49 | Zurück zum Standard-Hintergrund |
| \e[100m | 100 | Helles Schwarzer Hintergrund |
| \e[101m | 101 | Helles Roter Hintergrund |
| \e[102m | 102 | Helles Grüner Hintergrund |
| \e[103m | 103 | Helles Gelber Hintergrund |
| \e[104m | 104 | Helles Blauer Hintergrund |
| \e[105m | 105 | Helles Magenta Hintergrund |
| \e[106m | 106 | Helles Cyan Hintergrund |
| \e[107m | 107 | Helles Weißer Hintergrund |
256 Farben und True Color
4Zwei Erweiterungen des gleichen SGR-Mechanismus. Beide sind weit verbreitet, aber nicht überall unterstützt; ein Terminal, das sie nicht versteht, ignoriert die Sequenz normalerweise, statt sie auszugeben.
| Sequenz | Parameter | Wirkung |
|---|---|---|
| \e[38;5;<n>m | 38;5;n | Text in Palettenfarbe n, 0–2550–15 sind die 16 oben, 16–231 ein 6×6×6-Farbwürfel, 232–255 eine Graurampe. |
| \e[48;5;<n>m | 48;5;n | Hintergrund in Palettenfarbe n, 0–255 |
| \e[38;2;<r>;<g>;<b>m | 38;2;r;g;b | Text in einer exakten 24-Bit-Farbe |
| \e[48;2;<r>;<g>;<b>m | 48;2;r;g;b | Hintergrund in einer exakten 24-Bit-Farbe |
Cursorbewegung
11Bewegungen scrollen nicht und umbrechen nicht: ein Cursor, der bereits oben auf dem Bildschirm ist, ignoriert eine Anfrage zum Hochfahren.
| Sequenz | Parameter | Wirkung |
|---|---|---|
| \e[<n>A | A | Um n Zeilen nach oben |
| \e[<n>B | B | Um n Zeilen nach unten |
| \e[<n>C | C | Um n Spalten nach rechts |
| \e[<n>D | D | Um n Spalten nach links |
| \e[<n>E | E | Um n Zeilen nach unten, zum Zeilenanfang |
| \e[<n>F | F | Um n Zeilen nach oben, zum Zeilenanfang |
| \e[<n>G | G | Zur Spalte n der aktuellen Zeile |
| \e[<row>;<col>H | H | Zu absoluter Zeile und Spalte, gezählt ab 1 |
| \e[s | s | Die Cursorposition merken |
| \e[u | u | Zur gespeicherten Position zurückkehren |
| \e[6n | 6n | Das Terminal fragen, wo sich der Cursor befindetDas Terminal antwortet auf Standardeingabe als \e[<Zeile>;<Spalte>R — die einzige Sequenz hier, die eine Antwort erzeugt. |
Löschen
7Löschen schreibt Leerzeichen mit der aktuellen Hintergrundfarbe; es bewegt den Cursor nicht.
| Sequenz | Parameter | Wirkung |
|---|---|---|
| \e[0J | 0J | Löscht vom Cursor bis zum Ende des Bildschirms |
| \e[1J | 1J | Löscht vom Anfang des Bildschirms zum Cursor |
| \e[2J | 2J | Löscht den gesamten BildschirmDer Cursor bleibt dort, wo er war — deshalb wird dies normalerweise mit \e[H kombiniert. |
| \e[3J | 3J | Löscht auch den Scrollback-Puffer |
| \e[0K | 0K | Löscht vom Cursor bis zum Ende der Zeile |
| \e[1K | 1K | Löscht vom Anfang der Zeile zum Cursor |
| \e[2K | 2K | Löscht die gesamte Zeile\r\e[2K ist die übliche Methode, eine Fortschrittszeile an Ort und Stelle neu zu zeichnen. |
Terminalmodi
8Private Modi, gekennzeichnet durch ein Fragezeichen. Sie ändern das Verhalten des Terminals, nicht das Aussehen eines Textteils, und jeder muss vor dem Beenden des Programms ausgeschaltet werden.
| Sequenz | Parameter | Wirkung |
|---|---|---|
| \e[?25l | ?25l | Den Cursor ausblenden |
| \e[?25h | ?25h | Den Cursor anzeigen |
| \e[?1049h | ?1049h | Zum alternativen Bildschirm wechselnWas ein Vollbildprogramm verwendet, damit die Scrolling-Historie der Shell darunter erhalten bleibt. |
| \e[?1049l | ?1049l | Zurück zum Hauptbildschirm wechseln |
| \e[?7h | ?7h | Lange Zeilen am rechten Rand umbrechen |
| \e[?7l | ?7l | Lange Zeilen über den rechten Rand hinaus laufen lassen |
| \e[?2004h | ?2004h | Eingefügtes Text-Bracketing aktivierenEingefügter Text kommt mit \e[200~ und \e[201~ umhüllt an, damit eine Shell Eingabe von Einfügung unterscheiden kann. |
| \e[?2004l | ?2004l | Eingefügtes Text-Bracketing deaktivieren |