CR та LF
Американський стандартний код обміну інформацією (ASCII) визначає символи управління, включаючи CARRIAGE-RETURN (CR) та LINE-FEED (LF), які використовувались (і досі використовуються) для управління положенням друку на принтерах аналогічно до механічні друкарські машинки, які передували раннім комп'ютерним принтерам.
Залежність від платформи
У Windows традиційним роздільником рядків у текстових файлах є CR, а потім LF
У старих системах (перед OSX) Apple Macintosh традиційним роздільником рядків у текстових файлах був CR
У Unix та Linux традиційний роздільник рядків у текстових файлах - LF.
\ n і \ r
У багатьох мовах програмування та сценаріїв \n
означає "новий рядок". Іноді (але не завжди) це означає символ ASCII LINE-FEED (LF), який, як ви кажете, переміщує курсор (або положення друку) вниз на один рядок. У принтері чи друкарській машинці це насправді перемістить папір на один рядок.
Незмінно \r
означає символ ASCII CARRIAGE-RETURN (CR), назва якого фактично походить від механічних машинок, де був ключ повернення каретки, який спричинив переміщення валика ("каретки"), який перевозив папір, вправо, що працює від пружини, наскільки це пішло б. Таким чином, встановивши поточну позицію набору лівого поля.
Програмування
У деяких мовах програмування \n
може означати залежна від платформи послідовність символів, які закінчуються або відокремлюють рядки в текстовому файлі. Наприклад, в Perl print "\n"
виробляється інша послідовність символів в Linux, ніж у Windows.
У Java найкраща практика, якщо ви хочете використовувати нативні закінчення рядків для платформи виконання, - це не використовувати \n
або \r
взагалі. Ви повинні використовувати System.getProperty("line.separator")
. Ви повинні використовувати \n
та \r
де ви хочете LF та CR незалежно від платформи (наприклад, як це використовується в протоколах HTTP, FTP та інших протоколах зв'язку в Інтернеті).
Unix stty
У оболонці Unix stty
команда може використовуватися для того, щоб оболонка перекладалася між цими різними умовами. Наприклад stty -onlcr
, оболонка буде згодом переводити всі вихідні НЧ в CR LF.
Linux та OSX дотримуються конвенцій Unix
Текстові файли
Текстові файли як і раніше надзвичайно важливі та широко використовуються. Наприклад, HTML і XML - приклади текстового файлу. Більшість важливих інтернет-протоколів, таких як HTTP, дотримуються конвенцій текстових файлів і містять специфікації для закінчень рядків.
Принтери
Більшість принтерів, крім самого дешевого, все ще поважають CR та LF. Насправді вони є основними для найбільш широко використовуваних мов опису сторінок - PCL та Postscript.
\r\n
це добре в Windows, але\n\r
це не так, і я пам’ятаю, що\r\n
це абревіатура для зареєстрованої медсестри. Я також чую, що\n
це те, що люди використовують в Linux, і\r
не використовується одне лише з тією ж метою, що і\r\n
.\r
використовується в дійсно старих MacOS. Я не підтвердив цих фактів, хоча.