Escape-Sequenz

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 28. Juni 2014 um 13:13 Uhr durch Lemmi18 (Diskussion | Beiträge) (Bezug der Klammer). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Zur Navigation springen Zur Suche springen

Eine Escape-Sequenz (nach dem Escape-Zeichen, englisch to escape ‚aussteigen‘) ist eine Zeichenkombination in der technischen Informatik, die keinen Text repräsentiert, sondern vom Gerät abgefangen wird und eine Sonderfunktion ausführt. Bei einem Bildschirmterminal kann dies z. B. die Cursor-Positionierung sein, bei einem Drucker die Umschaltung auf eine andere Schriftgröße oder das Auswerfen der Seite.

Funktionsweise

Der Name leitet sich von dem Zeichen ab, mit dem die Sequenz meistens eingeleitet wird; dem ESC-Zeichen (im ASCII-Zeichensatz Hexadezimal-Code 1B, dezimal 27), welches spätestens seit 1968 als Umschaltzeichen zwischen normaler Bedeutung der Zeichen und Sonderfunktion benutzt wurde.[1]

Das jeweilige Programm – unabhängig davon, ob es sich um eine Anwendung für Desktoprechner oder ein Steuerprogramm in einem Peripheriegerät handelt – erkennt beim Verarbeiten einer Zeichenfolge, zum Beispiel eines Textes, das Escape-Zeichen, steigt aus der normalen Verarbeitung aus und löst die der folgenden Zeichensequenz zugeordnete Sonderfunktion aus. Anschließend wird die normale Verarbeitung fortgesetzt. Während der Bearbeitung des Textes dagegen, zum Beispiel in einem Texteditor, bleibt ein Escape-Zeichen als gewöhnliches Zeichen uninterpretiert und löst damit keine Funktion aus. Ein Sonderfall sind WYSIWYG-Programme, zu denen beispielsweise moderne Textverarbeitungsprogramme zählen, bei denen die Anzeige direkt der Ausgabe mit allen Sonderfunktionen entspricht.

Um beim Programmieren nicht-druckbare Steuerzeichen im Quelltext darzustellen, wird bestimmten Folgen von druckbaren Zeichen die Bedeutung einer Sonderfunktion verliehen, indem ein (anderes) bestimmtes Zeichen vorangestellt wird, das als Maskierungszeichen dient. So steht in der Programmiersprache C innerhalb einer Zeichenkettenkonstanten beispielsweise ein \n für einen Zeilenumbruch, ein \t für ein Tabulatorzeichen und ein \" für ein Anführungszeichen (während das einfache " nicht Teil einer Zeichenketten-Konstanten ist, sondern deren Ende bezeichnet). Eine solche Zeichenfolge wird in Übertragung der alten Funktionsbezeichnung ebenfalls Escape-Sequenz genannt, obwohl das eigentliche ESC-Zeichen dabei keine Verwendung mehr findet. In ähnlicher Weise wird von Microsoft Word in der Bearbeitungsfunktion „Suchen und Ersetzen“ das Zeichen ^ verwendet, beispielsweise ^t für den Tabulator.

Verwendung zur Druckersteuerung

Nach wie vor werden Escape-Sequenzen bei der Ansteuerung von Druckern verwendet. Beispiele für weit verbreitete Escape-Sequenz-basierte Druckersprachen sind:

Manche Drucker arbeiten dagegen nicht mit Escape-Sequenzen, sondern beispielsweise mit Seitenbeschreibungssprachen wie PostScript oder empfangen Befehle über eine separate Steueradresse auf dem Bus (z. B. bei Commodore-Rechnern).

Verwendung zur Terminalsteuerung

Im Terminalbereich sind die ANSI-Escape-Sequenzen, welche auf den Escape-Sequenzen des Terminals VT100 beruhen, weit verbreitet.[2] Sie wurden als ANSI X3.41-1974 und X3.64-1977 allgemeiner Standard. Sequenzen bestehen dabei aus dem Steuerzeichen Escape und einer Folge von druckbaren Zeichen.

Beispiele: ESC c (Terminal zurücksetzen), ESC [K (Zeile ab Cursor löschen), ESC [PnA (n ist eine Dezimalzahl, Cursor um (n) Zeilen aufwärts). Dieser Standard wurde so populär, dass Konsolentreiber wie ANSI.SYS für MS-DOS und OS/2, die virtuellen Konsolen und Terminal-Fenster der meisten Unix-artigen Betriebssysteme (wie beispielsweise Mac OS X und Linux) oder auch die Shell des AmigaOS diese Sequenzen ebenfalls unterstützen.

In C und verwandten Programmiersprachen

In C und zu C verwandten Programmiersprachen wie C++, C#, Java, awk, Perl und JavaScript können in Zeichenfolgen durch folgende Escape-Sequenzen häufig benötigte Steuerzeichen eingefügt werden (wobei nicht alle dieser Sprachen alle hier aufgeführten Sequenzen unterstützen). Die Bezeichnungen vieler Steuerzeichen stammen noch aus der Zeit, als Ausgaben vorwiegend auf Fernschreibern und Druckern erfolgten.

Escape-Sequenzen in C und C++
\' Einfaches Anführungszeichen
\" Doppeltes Anführungszeichen
\? Fragezeichen
\\ umgekehrter Schrägstrich
\a akustisches Signal (von englisch alert)
\b Rückschritt (von englisch backspace)
\e Ansi Escape, hexadezimal 0x1B (von englisch escape)

Ein Escapezeichen für eine höhere Interpretationsebene, siehe oben. Nicht Bestandteil von ISO C und ISO C++

\f Seitenvorschub (von englisch form feed)
\n Zeilenvorschub (von englisch new line)
\r Wagenrücklauf (von englisch carriage return)
\t Horizontaler Tabulator (von englisch horizontal tabulator)
\v Vertikaler Tabulator (von englisch vertical tabulator)
\xhh.. Direkte Zeichenauswahl durch folgende Hexadezimalziffern hh (von hexadezimal). Beispiel: \x40 entspricht dem Zeichen '@'.
Falls die so gebildete Hexadezimalzahl größer ist, als in einem Zeichen dargestellt werden kann, ist das Ergebnis implementierungsabhängig.
\ooo Direkte Zeichenauswahl durch folgende ein bis drei Oktalziffern ooo. Beispiel \100 entspricht dem Zeichen '@'.
Die Kurzform mit einer oder zwei Oktalziffern kann nur benutzt werden, wenn keine weitere Oktalziffer folgt.\0 (Nullzeichen, NUL) ist ein Spezialfall dieser Regel.
\uhhhh Unicode-Zeichen; Es müssen stets vier Hexadezimalziffern hhhh folgen. Beispiel:\u20ac für das Euro-Symbol U+20AC "€"
\Uhhhhhhhh Unicode-Zeichen; Es müssen stets acht Hexadezimalziffern folgen. Beispiel: \U0001D49C steht für das Unicode-Zeichen U+1D49C 𝒜 (MATHEMATICAL SCRIPT CAPITAL A)

Durch den Einfluss der stark verbreiteten Programmiersprache C finden sich dieselben Escape-Sequenzen auch in anderen Zusammenhängen wieder, z. B. in bestimmten Konfigurationsdateien.

Einzelnachweise

  1. Computermuseum München: Geschichte der Seiko Epson Corporation
  2. Digital Equipment Corporation: VT100 User Guide (engl.) – Handbuch des Terminals VT100