O'Reilly Online-Katalog
oreilly.deO'Reilly Network
KontaktBestellinfosOnline-Bücher

Pfeil Suche
Pfeil Bücher A-Z
Pfeil Neuerscheinungen
Pfeil Bücher bestellen
Pfeil Special Offer
 Programmbereiche
Pfeil
 Bioinformatik
 C/C++
 Design & Grafik
 Java
 Linux/Unix
 Mac
 .Net
 Open Source
 Oracle
 Perl
 PHP & MySQL
 Python
 Sicherheit
 System- &
 Netzwerkadministration
 Web
 Windows
 XML
Special Offer
 Buchreihen
Pfeil
 In a Nutshell
 Taschenbibliothek
 Missing Manuals
 Hacks
 Kochbücher
 CD Bookshelves
Pfeil Katalog bestellen
Pfeil Newsletter
Pfeil Archiv
Pfeil AGB

[Book Cover]


Mac OS X Hacks
100 Insider-Tricks & Tools

Rael Dornfest & Kevin Hemenway
Deutsche Übersetzung von André Aulich
1. Auflage Oktober 2003
ISBN 3-89721-363-X
Seiten 476, EUR32.00



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).

Abbildung 1-13
Auswahl der Art des Zeilenumbruchs in BBEdit
Abbildung 1-14
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.


O'Reilly Home | O'Reilly Partnerbuchhandlungen | Bestellinformationen
Kontakt | Über O'Reilly | Datenschutz


© 2003, O'Reilly Verlag GmbH & Co.KG
webmaster@oreilly.de