@sshannin opublikował adres URL z bloga Raymonda Chena, ale to już nie działa. Blog zmienił swoje oprogramowanie wewnętrzne, więc zmieniły się adresy URL.
Po przeszukaniu starych postów na nowym blogu znalazłem go tutaj .
Cytat z bloga:
Dlaczego terminator linii CR + LF?
Protokół ten sięga czasów teletyków. CR oznacza „powrót karetki” - znak kontrolny CR przywrócił głowicę drukującą („karetkę”) do kolumny 0 bez przesuwania papieru. LF oznacza „linefeed” - znak kontrolny LF przesuwał papier o jedną linię bez przesuwania głowicy drukującej. Więc jeśli chcesz przywrócić głowicę drukującą do zerowej kolumny (gotowa do wydrukowania następnej linii) i przesunąć papier (tak, aby wydrukowano na świeżym papierze), potrzebujesz zarówno CR, jak i LF.
Jeśli przejdziesz do różnych dokumentów protokołu internetowego, takich jak RFC 0821 (SMTP), RFC 1939 (POP), RFC 2060 (IMAP) lub RFC 2616 (HTTP), zobaczysz, że wszystkie określają CR + LF jako sekwencja zakończenia linii. Tak więc prawdziwe pytanie nie brzmi: „Dlaczego CP / M, MS-DOS i Win32 używają CR + LF jako terminatora linii?” ale raczej „Dlaczego inni ludzie zdecydowali się różnić od tych standardów i używać innego terminatora linii?”
Unix przyjął zwykły LF jako sekwencję zakończenia linii. Jeśli spojrzysz na opcje stty, zobaczysz, że opcja onlcr określa, czy LF powinno zostać zmienione na CR + LF. Jeśli źle zrobisz to ustawienie, otrzymasz tekst schodów, gdzie
each
line
begins
gdzie poprzednia linia została przerwana. Tak więc nawet unix pozostawiony w trybie surowym wymaga CR + LF do zakończenia linii. Niejawna CR przed LF jest wynalazkiem unixowym, prawdopodobnie jako ekonomia, ponieważ oszczędza jeden bajt na linię.
Uniksowe pochodzenie języka C przeniosło tę konwencję do standardu języka C, który wymaga tylko „\ n” (który koduje LF) do zakańczania wierszy, co nakłada na biblioteki uruchomieniowe konieczność konwersji surowych danych plików na linie logiczne.
Język C wprowadził również termin „nowa linia”, aby wyrazić pojęcie „ogólnego terminatora linii”. Powiedziano mi, że komitet ASCII zmienił nazwę znaku 0x0A na „nowa linia” około 1996 roku, więc poziom zamieszania wzrósł jeszcze bardziej.
Oto kolejna dyskusja na ten temat z perspektywy Uniksa
Zmieniłem ten drugi link na migawkę w The Wayback Machine, ponieważ rzeczywista strona nie jest już dostępna.
Mam nadzieję, że to odpowiada na twoje pytanie.