\r
возвращает курсор к началу строки, НЕ к следующей строке. Когда вы используете \n
в Linux, \r
подразумевается, в windows - нет.
Использование \r
в Unix-подобных системах может привести к перезаписи одной и той же строки.
Прочтите Великий раскол новой линии , в нем все подробно объясняется с большим юмором.
Нет, это не так.Современные текстовые редакторы часто относятся к ним так же, потому что их прежнее использование не имеет большого смысла для цифровых текстовых процессоров.
Например, \ r
буквально означает «вернуться в начало строки». Хотя это могло быть полезно для пишущей машинки, если вы просто хотели перезаписать все в этой строке, такая функциональность не имеет большого смысла для цифрового шрифта.
\ n
с другой стороны, просто переместится вниз по строке, не возвращаясь в начало. Это также было полезно на пишущей машинке для создания отступов или маркировки. Опять же, это не имеет особого смысла для цифрового шрифта.
Telnet является одним из примеров, когда оба символа все еще используются таким образом.
Оба символа были включены в язык ascii просто потому, что, когда он был задан в спецификации, они не осознавали, что функциональность, которая была полезна на пишущей машинке, не имела большого смысла на компьютере.
Советую вам прочитать это.
Вкратце, новая строка в Windows - это "\r\n"
, а новая строка в Unix - это просто "\n"
(и, чтобы усложнить жизнь, новая строка в старых Mac - это "\r"
)
Ах, старые времена пишущей машинки ...
Разница между ними проистекает из тех дней, когда печатали прямо на бумаге. Чтобы перейти к следующей строке, потребовалось два действия:
Разделение этих двух действий облегчило возврат к точной позиции символа, чтобы исправить это (не было возможности подняться на одну строку вверх или оставить один символ!). Удерживая белую бумагу на ошибочном символе и нажав эту клавишу, вы аккуратно вытесните именно этот ошибочный символ, затем вы можете вернуться снова и нажать правильную клавишу (хотя была клавиша, чтобы не перемещать каретку).
В молодой компьютерный век эти действия переводились 1 к 1 в \ r
для возврата каретки и \ n
для перемещения «бумаги».
В настоящее время основные операционные системы, по-видимому, расходятся во мнениях относительно того, необходимо ли это по-прежнему для компьютерных технологий, когда вернуться к предыдущему положению намного проще. Однако в современных языках программирования обычно предполагается, что \ n
означает \ r \ n
.
Вообще-то, возврат каретки должен переместить курсор в начало текущей строки. Затем, newline перемещает курсор точно вниз на единицу.
Сейчас компиляторы часто автоматически преобразуют одно или другое в \r\n
в Windows или \n
в Linux. Mac раньше использовал \r, но теперь они перешли на \n.
(правка: удалены ложные/непроверенные утверждения)