Wikipedia · einfach zusammengefasst · Stand
Escape-Sequenz
\a, akustisches Signal (von englisch alert) ; \b, Rückschritt (von englisch backspace) ; \e od. \E · ANSI Escape, hexadezimal 0x1B. Ein Escapezeichen für eine …
Inhalt5 Abschnitte
Grundidee und Verarbeitung
Eine Escape-Sequenz ist in der technischen Informatik eine Zeichenkombination, die keinen normalen Text darstellt. Ein Gerät oder Programm fängt sie ab und führt eine Sonderfunktion aus, etwa das Positionieren des Cursors am Bildschirmterminal, das Wechseln der Schriftgröße beim Drucker oder einen Seitenvorschub.
Meist beginnt eine solche Folge mit dem ESC-Zeichen. Im ASCII-Zeichensatz hat es den Hexadezimal-Code 1B und den Dezimalwert 27. Erkennt ein Programm beim Verarbeiten einer Zeichenfolge ESC, unterbricht es die normale Textverarbeitung, führt die durch die folgenden Zeichen bestimmte Funktion aus und setzt danach die normale Verarbeitung fort. Beim Bearbeiten eines Textes, zum Beispiel im Texteditor, kann ESC dagegen als gewöhnliches Zeichen ohne Funktion erscheinen. Bei WYSIWYG-Programmen entspricht die Anzeige unmittelbar der Ausgabe einschließlich der Sonderfunktionen.
Drucker und Terminals steuern
Escape-Sequenzen werden weiterhin zur Druckersteuerung genutzt, insbesondere in den Druckersprachen ESC/P von Epson und PCL von Hewlett-Packard. Andere Drucker verwenden stattdessen Seitenbeschreibungssprachen wie PostScript oder erhalten Befehle über eine getrennte Steueradresse auf dem Bus. In PCL5 positioniert die Folge ESC & a Spaltennummer C den Cursor horizontal in einer bestimmten Textspalte.
Für Terminals ist ein ANSI-Format verbreitet, das auf ANSI X3.41-1974, X3.64-1977 und ECMA-48 (1976) beruht; ECMA-48 wurde auch als ISO/IEC 6429 standardisiert. Die Sequenzen bestehen aus Escape und druckbaren Zeichen. VT100-Terminals von DEC, die 1978 zu den frühen Geräten auf dieser Grundlage gehörten, machten das Format weit verbreitet. Deshalb verwenden etwa virtuelle Konsolen und Terminalfenster vieler Unix-artiger Betriebssysteme wie macOS und Linux dieses Format; auch die Eingabeaufforderung von Windows 10 unterstützt ab Version 1511 Escape-Sequenzen im erweiterten Umfang von xterm.
Es gibt auch proprietäre Formate, zum Beispiel für Wyse- oder Televideo-Terminals. Beim ANSI-Standard bestimmt meist das letzte Zeichen die Funktion: ESC [ zeile ; spalte H setzt den Cursor, zum Beispiel ESC [ 5 ; 1 H. Beim Wyse-Format legt dagegen meist das Zeichen direkt nach ESC die Funktion fest: ESC a zeile R spalte C, zum Beispiel ESC a 005 R 001 C.
Typische Terminalfolgen
Einige Funktionen werden in ANSI/VT100 und Wyse unterschiedlich dargestellt:
- Bildschirm löschen: ANSI/VT100 ESC [ 2 J; Wyse ESC T.
- Zeile ab Cursor löschen: ANSI/VT100 ESC [ K; Wyse ESC t.
- Nachfolgenden Text blinkend darstellen: ANSI/VT100 ESC [ 5 m; Wyse ESC G 2.
- Cursor um Pn Zeilen aufwärts bewegen: ANSI/VT100 ESC [ Pn A, zum Beispiel ESC [ 5 A; für Wyse gibt es keine Entsprechung.
Bei den Beispielen zur Cursorpositionierung sind H im ANSI-Format und a im Wyse-Format die funktionsentscheidenden Zeichen.
Escape-Sequenzen in C und verwandten Sprachen
In C, C++, C#, Java, awk, Perl und JavaScript können Escape-Sequenzen in Zeichenfolgen häufig benötigte Steuerzeichen darstellen; nicht jede dieser Sprachen unterstützt alle Folgen. In C sind sie Teil des Ausführungszeichensatzes und gemäß ANSI C standardisiert. Sie werden mit dem Backslash \ eingeleitet.
Wichtige Folgen sind: \a für ein akustisches Signal, \b für Rückschritt, \f für Seitenvorschub, \n für Zeilenvorschub, \r für Wagenrücklauf, \t für Horizontal-Tabulator und \v für Vertikal-Tabulator. \e oder \E steht für ANSI Escape mit 0x1B, gehört aber nicht zu ISO C und ISO C++.
Zeichen lassen sich auch direkt angeben: \xhh.. verwendet nachfolgende Hexadezimalziffern, etwa \x40 für '@'; ist die Zahl für ein Zeichen zu groß, ist das Ergebnis implementierungsabhängig. \ooo verwendet ein bis drei Oktalziffern, etwa \100 für '@'; \0 ist dabei das Nullzeichen NUL. \uhhhh verlangt genau vier Hexadezimalziffern für ein Unicode-Zeichen, zum Beispiel \u20ac für U+20AC „€“. \Uhhhhhhhh verlangt genau acht Ziffern, etwa \U0001D49C für U+1D49C 𝒜.
Der Backslash kann außerdem Zeichen ohne ihre besondere Funktion darstellen: ' für ', " für ", ? für ? und \ für den Backslash selbst.
Maskieren von Sonderzeichen
Ein Maskierungszeichen leitet ebenfalls eine Escape-Sequenz ein, bewirkt hier aber, dass das folgende Zeichen als gewöhnliches Zeichen statt als Funktionszeichen interpretiert wird. In C ist dies der Backslash. Wegen des Einflusses von C kommen entsprechende Folgen auch in Konfigurationsdateien und auf Terminals unter Unix, Linux oder macOS vor, unter anderem bei Dateinamen.
Der Befehl user@computer:~$ touch $HOME/Dokumente/Eine\ Datei\ mit\ Leerzeichen\ und\ einem\ "Fragezeichen"?.txt erstellt im bereits vorhandenen Verzeichnis Dokumente die Datei Eine Datei mit Leerzeichen und einem "Fragezeichen"?.txt. Leerzeichen müssen maskiert werden, weil sie im Terminal Trennzeichen sind. Anführungszeichen müssen maskiert werden, weil sie normalerweise Zeichenketten einleiten oder beenden, und das Fragezeichen, weil es normalerweise als Wildcard interpretiert wird.
Im World Wide Web hat das Prozentzeichen beim URL-Encoding eine ähnliche Funktion.