`^ M` am Ende jeder unter Windows generierten Zeile von Textdateien

10

Ich habe mich gefragt, warum Sie beim Öffnen einer im Windows-Editor unter Unix erstellten Textdatei feststellen, dass dort, ^Mwo eine neue Zeile stehen sollte, eine neue Datei vorhanden sein sollte.

Mein Verständnis ist, dass in Windows jede Zeile mit \r\n, dh 0x0D0Ain ASCII, beendet wird , während sie ^Meinen ASCII-Wert hat 0x5E4D. Ich kann diese beiden nicht miteinander in Beziehung setzen.

Tim
quelle
In Windows können Sie einen besseren Editor wie Notepad ++ verwenden. Sie können die Dateien mit UNIX-Zeilenenden speichern, sie jedoch in Windows so anzeigen, als ob sie Windows-Zeilenenden hätten. Dann können Sie es in beiden Betriebssystemen gut anzeigen.
Kevin
Siehe auch Jeff Atwoods
Einstellung

Antworten:

19

Sie haben Recht damit, dass die Zeilenenden wichtig sind. Beide Betriebssysteme erwarten, dass die Zeile mit "\ n" endet, aber Windows fügt vorher auch ein "\ r" hinzu, das Unix nicht erwartet, sodass Unix-Programme das "\ r" auf ihre eigene Weise ausgeben.

Die Datei endet nicht mit den beiden Zeichen "^" und "M". Dies ist nur eine übliche Methode, um nicht druckbare Zeichen darzustellen. Programme geben "^" und einen Buchstaben aus, der dem Wert des Bytes entspricht, beginnend mit A für 1. M ist der 13. Buchstabe, und '\ r' ist ASCII-Code 13 (oder 0xD, wie Sie sagten), sodass Sie "^" sehen M "

Michael Mrozek
quelle
2
Das ist auch eine Kurzform für Strg-M, mit der Sie diesen Charakter über die Tastatur erhalten.
Steven Pritchard
7
Sie können die Befehlszeilenprogramme verwenden dos2unixund unix2dosTextdateien zwischen Formaten konvertieren.
Chris Nava
1
@ Chris True, hat aber nichts mit der Frage zu tun
Michael Mrozek
Vielen Dank! (1) Ich habe mich gefragt, welche Programme auf diese Weise nicht druckbare Zeichen ausgeben. Funktionieren beispielsweise alle Texteditoren / Viewer so? (2) Welche Arten von nicht druckbaren Zeichen werden so behandelt und welche nicht? Zum Beispiel, warum Text nicht Zuschauer Ausgang ^Jfür \n?
Tim
1
Die ^ M-Darstellung liegt Jahre, wenn nicht Jahrzehnte vor GUI-Texteditoren.
Chris Nava