Hat OS X ein eigenes Zeilenformat?

7

Offensichtlich gibt es mindestens zwei Newline-Typen: DOS und Unix. Aber hat OS X ein eigenes Klartextformat?

Ich öffnete eine Textdatei nanound war überrascht zu sehen:[ Read 26793 lines (Converted from Mac format) ]

Was ist das Mac-Format, wie unterscheidet es sich von einer Datei, die mit einem Unix-Tool wie nano geschrieben wurde, und warum muss es konvertiert werden, um nanoauf einem Mac gelesen zu werden ?

Tom Marthenal
quelle

Antworten:

14

Es sollte darauf hingewiesen werden, dass Mac OS X jetzt, wie alle anderen * nix-Systeme, auch \nbekannt als linefeed ( 0x0A) verwendet. Es werden nur Mac OS-Versionen 9 und älter verwendet \r(CR).

Referenz: Wikipedia über Zeilenumbrüche .

jw013
quelle
4

jw013 weist in einer anderen Antwort darauf hin, dass Mac jetzt auf den * nix-Standard umgestellt hat \n.

Zuvor war Mac OS \r(Wagenrücklauf, 13 / 0x0D); Windows ist \r\nund * nix sind \n(Zeilenvorschub, 10 / 0x0A). Ich bin mir nicht sicher für die dunkeleren Systeme, aber ich würde vermuten, dass fast alles andere auch so ist \n. Der Unterschied ergibt sich aus den Tagen des Teletyps, an denen \nin die nächste Zeile gewechselt wurde und \rder Kopf zum Anfang (linke Seite) der Seite zurückbewegt wurde, ähnlich wie bei einer manuellen Schreibmaschine (manuell) der Tag. Beachten Sie, dass in einem Terminal unter Linux \rder Cursor immer noch an den Anfang der aktuellen Zeile bewegt wird, anstatt in die nächste Zeile zu wechseln, was der Verwendung des Teletyps entspricht. Ich habe detailliertere Historien darüber gesehen, warum jedes System seine eigenen Leitungstypen ausgewählt hat, daher bin ich sicher, dass Sie nach weiteren Details suchen können.

In der Praxis können die meisten Redakteure (mit Ausnahme des Notizblocks) mit jedem der drei Typen umgehen, und es gibt zahlreiche Möglichkeiten, zwischen ihnen zu konvertieren. Einige Remote-Kopiertools (z. B. FTP und wahrscheinlich andere ähnliche Programme) konvertieren beim Transportieren von Dateien im Textmodus sogar transparent in die richtigen Zeilentypen für das Ziel. Und ich habe heute in einem SO-Beitrag 1 gelesen, dass gcc tatsächlich \nin das entsprechende Zeilenende für das System konvertiert, auf dem es kompiliert wird.


¹ Zitat:

Die unterschiedlichen Zeichen am Zeilenende spielen keine Rolle, vorausgesetzt, die Datei ist im Textmodus geöffnet. Dies erhalten Sie, wenn Sie nicht nach Binärdateien fragen. Das kompilierte Programm schreibt das Richtige für das kompilierte System aus.

Kevin
quelle
+1. Kannst du den SO Post Link teilen?
Prinz John Wesley
1
Du hast das ein bisschen durcheinander gebracht. Während Sie richtig sind, dass Old Mac '\ r' verwendet, verwendet Windows '\ r \ n' und Unix '\ n' - die von Ihnen angegebenen Beschreibungen und Hex-Codes sind falsch. '\ r' ist ein Wagenrücklauf 0x0d / 13 und '\ n' ist ein Zeilenvorschub 0x0a / 10. Referenz: en.wikipedia.org/wiki/ASCII#ASCII_control_characters
teambob
1
@ Kevin, nichts, was Sie in Ihrer Antwort gesagt haben, war falsch, aber es hat in keiner Weise die Frage beantwortet, die sich auf OS X bezog.
Jeremy Visser
1
Sie haben den Fehler, auf den teambob hingewiesen hat, immer noch nicht vollständig behoben: 0x0A= 10ist nicht dasselbe wie 0x10= 16. Das Gleiche gilt, wenn man 0x13 nicht dasselbe ist wie 0x0D.
jw013
1
Ich bin anderer Meinung - Ihre Antwort war irreführend. Das OP fragte eindeutig nach "Mac" im Kontext moderner OS X-basierter Maschinen. Die Angabe der Mac-Zeilenenden erfolgt ohne Klärung, da "Mac OS 9 und früher" irreführend ist.
Jeremy Visser