Escape-SequenzEine Escape-Sequenz (nach dem Escape-Zeichen, englisch to escape ‚entkommen‘) 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. Als englisch Escaping wird auch die Nutzung eines Maskierungszeichens bezeichnet, das ebenfalls eine Escape-Sequenz darstellt. Umgekehrt wird hier ein Zeichen, das normalerweise als Teil einer Sonderfunktion erkannt würde, ohne Funktion interpretiert. FunktionsweiseDer 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 Verwendung zur DruckersteuerungNach 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). Beispiel: In der Drucksteuersprache PCL5 von Hewlett-Packard wird der Cursor mittels der Sequenz Verwendung zur TerminalsteuerungIm Terminalbereich sind die ANSI-Escapesequenzen in einem Format weit verbreitet, das auf Standards basiert, die ursprünglich als ANSI X3.41-1974 und X3.64-1977 bzw. ECMA-48 (1976)[3] veröffentlicht wurden. Die Sequenzen bestehen dabei aus dem Steuerzeichen Escape und einer Folge von druckbaren Zeichen. ECMA-48 erhielt 1991 seine fünfte und letzte Erweiterung[4] und wurde auch als ISO/IEC 6429 standardisiert. Die VT100 Terminals des Herstellers DEC waren 1978 unter den ersten, deren Funktion auf diesem Standard beruhte.[5] Durch die Popularität des VT100 Terminals, wurden Terminalsysteme mit Escape-Sequenzen auf Basis des ECMA-48 Standards weit verbreitet.[6] Dieser Standard wurde so populär, dass Konsolentreiber wie ANSI.SYS für MS-DOS (bzw. allgemein PC-kompatibles DOS), OS/2 und auch die Shell des AmigaOS den Standard implementierten. Dadurch, dass das bei Unix-artigen Betriebssysteme verbreitete Terminalemulationsprogramm xterm auf VT100 (und somit auf dem ANSI-Standard) basiert[7], arbeiten heute die virtuellen Konsolen und Terminal-Fenster der meisten Unix-artigen Betriebssysteme (wie beispielsweise macOS und Linux) mit Escape-Sequenzen in diesem Format. Erwähnenswert ist auch, dass so gut wie alle der genannten Konsolen und Terminals in ihrer Implementierung inzwischen weit über den ursprünglichen ECMA-48 Standard hinausgehen und viele der Erweiterungen aus den späteren DEC Terminals unterstützen, wie z. B. dem VT420-Terminal.[7] Auch die Eingabeaufforderung von Windows 10 unterstützt Escape-Sequenzen ab Version 1511 im erweiterten Umfang von xterm.[8] Allerdings gab und gibt es für die Terminal-Steuerung auch andere, proprietäre auf Escape-Sequenzen basierende Formate, die jedoch nicht standardisiert wurden. Zum Beispiel unterscheidet sich Format der Wyse oder Televideo Terminals wesentlich vom ANSI-Standard. Diese Sequenzen bestehen aus meist zur zwei Zeichen, wobei bei längeren Sequenzen dasjenige Zeichen, das direkt auf das Escape-Zeichen folgt, die Funktion der Sequenz festlegt. Im Unterschied dazu ist es beim ANSI-Standard so, dass typischerweise erst das letzte Zeichen der Sequenz entscheidet, welche Funktion die Sequenz hat.[9][5][10] Beispielsweise wird im ANSI-Standard der Cursor in eine bestimmte Position gestellt, indem der Server die Escape-Sequenz BeispieleDie folgende Tabelle enthält eine Gegenüberstellung einiger Sequenzen zur Terminalsteuerung in verschiedenen Formaten.[5][10][9]
In C und verwandten ProgrammiersprachenIn 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). In C selbst sind Escape-Sequenzen, auf Deutsch auch Flucht-Sequenzen, ein Teil des Ausführungszeichensatzes der Programmiersprache. Diese sind auch gemäß ANSI C standardisiert, obwohl manche Compiler (auf bestimmten Betriebssystemen) zusätzlich auch vom Standard abweichende Escape-Sequenzen verwenden können. Die Bezeichnungen vieler Steuerzeichen stammen noch aus der Zeit, als Ausgaben vorwiegend auf Fernschreibern und Druckern erfolgten. In C und damit verwandten Programmiersprachen wird eine Escape-Sequenz mit dem Backslash, Taste: \, eingeleitet.
Der Backslash (auch Rückstrich oder umgekehrter Schrägstrich) dient in dieser Form jedoch auch als Maskierungszeichen, um Zeichen des Basis-Zeichensatzes von C, also alle Zeichen, die eigentlich eine Bedeutung und Funktion innehaben, auch ohne deren Funktion verwenden zu können; das betrifft auch den Backslash selbst. Das heißt, will man Teile der sog. Grafiksymbole von C, das sind die Zeichen
Maskierungszeichen zum Verhindern einer Escape-SequenzDa eine Escape-Sequenz durch mindestens eines der verfügbaren Zeichen eingeleitet wird, stehen fortan genau diese Zeichen nicht mehr für normalen Text zur Verfügung, da diese ja speziellen Funktionen zugeordnet werden (Funktionszeichen). Bei der Programmiersprache C ist dies der Backslash. Durch den Einfluss von C, der auch der starken Verbreitung geschuldet ist, finden sich dieselben Escape-Sequenzen auch in anderen Zusammenhängen wieder, z. B. in bestimmten Konfigurationsdateien oder auch auf einem Terminal (z. B. unter Unix, Linux oder macOS), u. a. bei der Angabe von Dateinamen. Technisch gesehen leitet ein Maskierungszeichen ebenfalls eine Escape-Sequenz ein, jedoch ist die Funktion dieser Escape-Sequenz die, das ihr folgende Zeichen auszugeben. Die Funktion ermöglicht demnach die Nutzung des ursprünglichen Zeichens ohne deren zugeordneter Funktion. Beispiel: user@computer:~$ touch $HOME/Dokumente/Eine\ Datei\ mit\ Leerzeichen\ und\ einem\ \"Fragezeichen\"\?.txt Dieser Befehl erstellt unter unixartigen Systemen (z. B. Linux oder macOS) im Benutzerverzeichnis die Datei Im World Wide Web übernimmt das Prozentzeichen eine ähnliche Funktion beim URL-Encoding. Weblinks
Einzelnachweise
|