Zeilenvorschub
aus Wikipedia, der freien Enzyklopädie
Unter Zeilenvorschub (englisch line feed) versteht man im ursprünglichen Sinne das Drehen der Walze bei einer Schreibmaschine. Mit dem Aufkommen der elektronischen Datenverarbeitung und damit der dazugehörigen Drucker und Bildschirme benötigte man ein Steuerzeichen, das sinngemäß genau das Gleiche hervorruft, nämlich das Bewegen in die nächste Zeile.
Dies ist notwendig, um Texte mit Umbrüchen und Absätzen entsprechend ausgeben zu können. Daher wurde in praktisch allen Zeichensätzen ein solches Steuerzeichen vorgesehen. Im ASCII-Zeichensatz, dem verbreitetsten und meistgenutzten Zeichensatz weltweit, wurde z. B. das Zeichen hexadezimal 0A
bzw. dezimal 10
dafür vorgesehen, im EBCDIC-Code das Zeichen hexadezimal 25
bzw. dezimal 37
. Die übliche Abkürzung ist LF
.
Historisch wurde zunächst auf Fernschreibern die Zeichenkette CR LF
als Zeichenvorschub eingeführt, also erst ein Wagenrücklauf (englisch carriage return) und dann der Sprung in die nächste Zeile. Das rührt daher, dass ein simpler Zeilenvorschub im historischen Sinn nur die Walze vorschiebt, den Cursor also in die nächste Zeile befördert. Erst der Wagenrücklauf bringt ihn ganz an den Anfang dieser Zeile. Mit Einführung moderner Computer wurde damit uneinheitlich verfahren: Bei manchen Betriebssystemen wurde dieses Doppelzeichen unverändert weiterbenutzt, bei anderen auf ein einzelnes Zeichen verkürzt, Details im Folgenden.
[Bearbeiten] Zeilenumbruchzeichen unter verschiedenen Betriebssystemen
Betriebssystem | Zeichen | C-Code | ASCII hexadez. | ASCII dezimal |
---|---|---|---|---|
DEC RT-11, CP/M, MS-DOS, Windows | CR LF |
\r\n | 0D0A | 13 10 |
Commodore, Apple II, Apple Mac OS bis Version 9 | CR |
\r | 0D | 13 |
Multics, alle Unix-Derivate, Mac OS X | LF |
\n | 0A | 10 |
IBM-EBCDIC-Systeme | NL |
15 | 21 |
Die Codierung der Zeilenumbrüche ist unter verschiedenen Betriebssystemen nicht einheitlich.
- Microsoft blieb für MS-DOS bei der Zeichenkette
CR LF
. Für Microsoft Windows wurde dieses System beibehalten. - Unix und seine Derivate, wie zum Beispiel Linux, aber auch AmigaOS, verwenden seit jeher nur das Zeichen
LF
, also einen einfachen Zeilenvorschub, der den Cursor automatisch an den Anfang der nächsten Zeile befördert. - Apples Mac OS verwendete bis Version 9 lediglich das Zeichen
CR
, welches, wieLF
unter Unix, für Zeilenvorschub und Wagenrücklauf sorgte. Seit Mac OS X wird jedoch auchLF
verwendet, da dieses vollständig neu entwickelt wurde und nun auf Unix aufsetzt. - EBCDIC-Systeme — hauptsächlich IBM-Mainframe-Systeme, zum Beispiel z/OS (OS/390) und i5/OS (OS/400) — verwenden NL (Next Line, 15 hex). EBCDIC kennt auch die Kontrollzeichen CR und LF, aber die Kodierung von LF (25 hex) unterscheidet sich vom ASCII (0A hex). Außerdem gibt es EBCDIC-Varianten, die NL mit einer anderen Kodierung verwenden.
- ISO 8859-1 kennt ebenfalls eine Kodierung für Next Line: 133 dezimal (85 hex), die allerdings keine weitere Verbreitung gefunden hat.
- In den meisten Internet-Protokollen (z. B. Post Office Protocol - Version 3, RFC 1939) ist
CR LF
als Zeilentrenner vorgeschrieben. Typische Implementierungen tolerieren aber auchLF
.
Aus diesem Grund ist der Austausch von Textdaten zwischen diesen unterschiedlichen Betriebssystemen erheblich erschwert. Viele Programme, zum Beispiel Browser, akzeptieren daher jedes dieser Steuerzeichen als Zeilenvorschub, auch wenn dies technisch nicht ganz korrekt ist.
Bekannt ist auch das FTP, welches für dieses Problem sogar zwei Übertragungsmodi entwickelt hat: ASCII und binary. Während letzteres die Daten unverändert überträgt, kümmert sich beim ASCII-Übertragungsverfahren der Server darum, dass der Zeilenvorschub den entsprechenden Erfordernissen angepasst wird. Wird also von einem Windows-Client auf einen Unix-Server im ASCII-Format übertragen, werden CR LF
automatisch zu LF
umgewandelt.
Zu viel Verwirrung führen auch Fehler beim Ausführen von Skripten, welche auf die Shebang-Zeile zurückzuführen sind, siehe Problematik des Zeilenendes bei der Shebang-Zeile.