@sshannin hat eine URL aus Raymond Chens Blog gepostet, aber es funktioniert nicht mehr. Das Blog hat seine interne Software geändert, sodass sich die URLs geändert haben.
Nachdem ich die alten Beiträge im neuen Blog durchgeblättert habe, habe ich sie hier gefunden .
Zitat aus dem Blog:
Warum ist der Leitungsterminator CR + LF?
Dieses Protokoll stammt aus der Zeit der Fernschreiber. CR steht für "Wagenrücklauf" - das CR-Steuerzeichen brachte den Druckkopf ("Wagen") in Spalte 0 zurück, ohne das Papier vorzuschieben. LF steht für "Zeilenvorschub" - das LF-Steuerzeichen hat das Papier um eine Zeile vorgerückt, ohne den Druckkopf zu bewegen. Wenn Sie also den Druckkopf auf Spalte Null zurücksetzen möchten (bereit, die nächste Zeile zu drucken) und das Papier vorschieben möchten (damit es auf frischem Papier gedruckt wird), benötigen Sie sowohl CR als auch LF.
Wenn Sie zu den verschiedenen Internetprotokolldokumenten wie RFC 0821 (SMTP), RFC 1939 (POP), RFC 2060 (IMAP) oder RFC 2616 (HTTP) gehen, werden Sie feststellen, dass alle CR + LF als angeben Zeilenabschlusssequenz. Die eigentliche Frage lautet also nicht: "Warum verwenden CP / M, MS-DOS und Win32 CR + LF als Leitungsterminator?" sondern "Warum haben andere Leute beschlossen, sich von diesen Standarddokumenten zu unterscheiden und einen anderen Leitungsabschluss zu verwenden?"
Unix übernahm einfaches LF als Leitungsabschlusssequenz. Wenn Sie sich die stty-Optionen ansehen, werden Sie feststellen, dass die Option onlcr angibt, ob ein LF in CR + LF geändert werden soll. Wenn Sie diese Einstellung falsch verstehen, erhalten Sie Treppenstext, wo
each
line
begins
wo die vorherige Zeile aufgehört hat. Selbst Unix erfordert im Raw-Modus CR + LF, um Zeilen zu beenden. Die implizite CR vor LF ist eine Unix-Erfindung, wahrscheinlich als Wirtschaftlichkeit, da sie ein Byte pro Zeile spart.
Die Unix-Abstammung der C-Sprache übertrug diese Konvention in den C-Sprachstandard, der nur "\ n" (das LF codiert) zum Beenden von Zeilen benötigt, was die Laufzeitbibliotheken belastet, Rohdaten in logische Zeilen umzuwandeln.
Die C-Sprache führte auch den Begriff "Newline" ein, um das Konzept des "generischen Zeilenabschlusses" auszudrücken. Mir wurde gesagt, dass das ASCII-Komitee den Namen des Zeichens 0x0A um 1996 in "newline" geändert hat, sodass die Verwirrung noch höher ist.
Hier ist eine weitere Diskussion des Themas aus einer Unix-Perspektive
Ich habe diesen zweiten Link in einen Schnappschuss in The Wayback Machine geändert, da die eigentliche Seite nicht mehr verfügbar ist.
Ich hoffe das beantwortet deine Frage.