Походження асиметрії бере свій шлях до історії обчислень.
Коротка версія:
<CR> & <LF> (Carriage-Return and Linefeed)
==
\r & \n
Довга версія:
Перші екрани в основному були цифровими версіями телетипів (TTY) і використовували керуючі коди для створення аналогічної поведінки принтерів. Каретка-повернення взяла курсор (або друкувальну головку) до стартової колонки. Подача ліній переходила до наступного ряду (на екрані) і подала папір вперед на один рядок.
Для принтерів вам довелося робити в парі, інакше <CR><LF>
ваш вихід не буде виглядати правильно. На ранніх екранах проблема все ще залишається актуальною.
DOS (і сортування Windows після) дотримувались старого стандарту та зберігає текст <CRLF>
.
* Текст NIX (як знайомий більшості користувачів vi) використовується лише <LF>
для ефективності.
Для тестування в Windows використовуйте Word / Wordpad і збережіть кілька рядків тексту "як тип: Текст - формат MS-DOS". Потім відкрийте той самий файл у Блокноті. Це повинно виглядати нормально. Потім збережіть той самий файл у Word / Wordpad "як тип: Текст". Блокнот ігнорує всі нові рядки та запускатиме рядки разом. [Текстовий формат блокнота за замовчуванням відповідає \r\n
комбінації, тоді як Word / Wordpad за замовчуванням \n
.]
\ r - еквівалент коду <CR>
\ n - еквівалент коду <LF>
І в моєму (дуже обмеженому) досвіді роботи з vi, він би намагався "виправити" <CRLF>
комбінацію з мого редактора тексту DOS. vi видав один символ, замінивши його <NUL>
. Значна частина причини, по якій я припинив використовувати vi.
\r
це так<CR>
і\n
є<LF>
. Це не стосується актуального питання, чому\n\r
поводитися по- різному в різних контекстах.