@ sshannin опубликовал URL из блога Рэймонда Чена, но он больше не работает. Блог изменил свое внутреннее программное обеспечение, поэтому URL-адреса изменились.
Почему терминатор строки CR + LF?
Этот протокол восходит ко временам телетайпов. CR стоит
для «возврата каретки» - контрольный символ CR вернул отпечаток
голова («каретка») к колонке 0 без продвижения бумаги. LF стоит
для «перевода строки» - управляющий символ НЧ переводит бумагу на одну строку
без перемещения печатающей головки. Так что, если вы хотите вернуть печать
перейдите к нулевому столбцу (готов к печати следующей строки) и продвиньте
бумага (поэтому она печатается на свежей бумаге), вам нужны как CR, так и LF.
Если вы переходите к различным документам интернет-протокола, таким как RFC 0821
(SMTP), RFC 1939 (POP), RFC 2060 (IMAP) или RFC 2616 (HTTP), вы
видим, что все они определяют CR + LF в качестве последовательности завершения строки. Так
реальный вопрос не в том, «почему CP / M, MS-DOS и Win32 используют CR + LF».
как терминатор линии? », а« Почему другие люди решили
отличаются от этих стандартов документов и используют некоторые другие линии
терминатор?»
Unix принял обычный LF в качестве последовательности завершения строки. Если вы посмотрите на
параметры stty, вы увидите, что параметр onlcr указывает, является ли
LF должен быть изменен на CR + LF. Если вы неправильно установили этот параметр, вы
получить текст ступеньки, где
каждый
строка
начинается
где предыдущая строка остановилась. Так что даже Unix, когда он оставлен в необработанном режиме, требует CR + LF для завершения строк. Неявный CR
до того, как LF является изобретением Unix, вероятно, как экономика, так как это экономит
один байт на строку.
Unix родословная языка C перенесла это соглашение в C
языковой стандарт, который требует только «\ n» (который кодирует LF) для
завершать строки, накладывая бремя на библиотеки времени выполнения
преобразовать необработанные данные файла в логические строки.
Язык C также ввел термин «новая строка» для выражения
понятие «терминатор родовой строки». Мне сказали, что ASCII
комитет изменил имя персонажа 0x0A на «новую строку» около 1996 года,
таким образом, уровень путаницы был поднят еще выше.
Вот еще одно обсуждение этой темы с точки зрения Unix
Я изменил эту вторую ссылку на снимок в The Wayback Machine, так как реальная страница больше не доступна.
Надеюсь, это ответит на ваш вопрос.