Hack #5 Ein Zeilenumbruch ist ein Zeilenumbruch
Ein Zeilenumbruch ist ein Zeilenumbruch ist ein Zeilenumbruch, es sei denn, er ist es nicht. Merkwürdigerweise gibt es drei verschiedene Arten von Zeilen-umbrüchen in der modernen Computerwelt, und Mac OS X verwendet zwei davon.
Man könnte meinen, dass ein unschuldiger, kleiner Zeilenumbruch, der uns bloß mitteilt, wo ein Absatz beginnt und endet, ein relativ simples Stück Computertechnik sei. Unglücklicherweise hat es mit dem Zeilenumbruch aber wesentlich mehr auf sich, als man zunächst meinen dürfte.
Es gibt drei verschiedene Arten von Zeilenumbrüchen, die ursprünglich jeweils einem der großen Betriebssysteme zuzurechnen waren: Windows/DOS, Macintosh und Unix. Ein Dokument mit Mac-Zeilenumbrüchen sieht auf einem Windows-System grässlich aus, und ein Dokument mit Windows-Umbrüchen wird von Unix auch nicht korrekt interpretiert. Der Grund dafür besteht darin, wie der Zeilenumbruch erstellt wird. Der Mac bedient sich standardmäßig eines einfachen Carriage Returns (<CR>), dargestellt als \r. Unix hingegen verwendet einen einfachen Zeilenvorschub (<LF> für engl. line feed), dargestellt als \n. Windows geht einen Schritt weiter und verbindet beide (<CRLF>) zu der Kombination \r\n.
Um die Sache noch interessanter zu machen, funktionierten betriebssystemspezifische Zeilenumbrüche nur in ihrer angestammten Umgebung ordnungsgemäß. Windows verstand nur seine Brüder, Unix schnatterte alles andere aufgeregt an, und der Mac grinste nur wissend. Mac OS X hingegen versteht sowohl die ursprünglichen Mac- als auch die Unix-Zeilenumbrüche.
Dadurch kann einiges an Verwirrung entstehen, insbesondere, da die meisten Mac-Programme (d.h. fast alles, was die GUI von Mac OS X nutzt) Zeilenumbrüche im Mac-Stil lesen und schreiben, während alles, was im Terminal läuft (wie die gängigen Text-Editoren [Hack #51] vi, pico und Emacs) die Unix-Variante verwendet.
Zum Glück ist es ziemlich einfach, die Probleme zu lösen, die sich aus dieser dualen Geisteshaltung ergeben. Der erste Schritt ist festzustellen, dass Sie ein Problem haben. Angenommen, Sie haben mit SimpleText oder mit der Standardinstallation von BBEdit eine Textdatei gesichert. Wenn Sie versuchen, diese Datei in einem Shell-Editor wie vi zu öffnen, werden Sie statt des Erwarteten den folgenden Text sehen:
Dies sollte Zeile Eins sein.^MDies sollte in der zweiten Zeile stehen.
Sehen Sie das widerliche ^M-Zeichen zwischen den beiden Sätzen? Das ist das Beste, was vi und die meisten anderen Unix-Programme aus einem Mac-Zeilenwechsel machen können. Wenn Sie umgekehrt eine in vi erstellte Textdatei mit SimpleText öffnen, werden Sie statt Zeilenumbrüchen kleine Rechtecke sehen. Es liegt auf der Hand, dass dadurch jeglicher Anlauf, sich als Dichter zu versuchen, bereits im Keim erstickt wird.
Es gibt aber einige Lösungen, die je nach Ihren Fähigkeiten und Wünschen Abhilfe schaffen. Als Erstes bietet es sich an, Ihren Text-Editor an Ihre häufigsten Bedürfnisse anzupassen. Wenn Sie ständig Dateien schreiben, die in der Shell benutzt werden, stellen Sie Ihren Text-Editor so ein, dass er Unix-Zeilenumbrüche speichert. In BBEdit von Bare Bones Software (http://www.barebones.com/), ein Editor, den Sie unbedingt haben sollten, können Sie das auf sehr einfache Art sowohl in der einzelnen Datei (siehe Abbildung 1-13) als auch global über BBEdits ultrakonfigurierbare Voreinstellungen tun (siehe Abbildung 1-14).
Auswahl der Art des Zeilenumbruchs in BBEdit
|
|
Einstellen des Standardzeilenumbruchs in den BBEdit-Voreinstellungen
|
|
Wenn terminalbasierte Text-Editoren eher Ihr Ding sind, sollten Sie sich vim (für vi improved), eine verbesserte vi-Version anschauen: Es ist flexibel und unbegrenzt konfigurierbar, wenn es darum geht, Dateien verschiedener Formate zu bearbeiten. http://vim.sourceforge.net/htmldoc/usr_23.html liefert Ihnen mehr als genug Informationen zur Auswahl Ihres Zeilenumbruchs.
Wenn Sie eine weniger dauerhafte Lösung suchen, kann Ihnen ein einfacher Befehl einigen Ärger ersparen. Hier haben wir zwei einfache Perl-Einzeiler aufgelistet. Der erste übersetzt Mac-Zeilenwechsel in ihr Unix-Äquivalent, der zweite macht das Gleiche in umgekehrter Richtung. Sie werden feststellen, dass die Zeilenumbrüche durch dieselben Zeichen gekennzeichnet werden, die wir schon oben erwähnt haben:
perl -pi -e 's/\r/\n/g' Datei_mit_Mac_Zeilenumbrüchen.txt
perl -pi -e 's/\n/\r/g' Datei_mit_Unix_Zeilenumbrüchen.txt
Falls Sie jemals auf eine Datei mit Windows-Umbrüchen stoßen, können Sie sie mit Hilfe der folgenden Beispiele einfach in Ihr bevorzugtes Format umwandeln:
perl -pi -e 's/\r\n/\n/g' Datei_mit_Win_Zeilenumbrüchen.txt
perl -pi -e 's/\r\n/\r/g' Datei_mit_Win_Zeilenumbrüchen.txt
Mit Hilfe der in diesem Hack vorgestellten Beispiele können Sie auch die nötigen Befehle zusammenstellen, um Mac- oder Unix-Zeilenumbrüche in das Windows-Format zu konvertieren.
|