CR dan LF
American Standard Code for Information Interchange (ASCII) mendefinisikan karakter kontrol termasuk CARRIAGE-RETURN (CR) dan LINE-FEED (LF) yang dulu (dan masih) digunakan untuk mengontrol posisi cetak pada printer dengan cara yang dianalogikan dengan mesin tik mekanik yang mendahului printer komputer awal.
Ketergantungan platform
Di Windows, pemisah baris tradisional dalam file teks adalah CR diikuti oleh LF
Dalam sistem Apple Macintosh lama (pra OSX) pemisah garis tradisional dalam file teks adalah CR
Di Unix dan Linux, pemisah baris tradisional dalam file teks adalah LF.
\ n dan \ r
Dalam banyak bahasa pemrograman dan skrip \n
berarti "baris baru". Terkadang (tetapi tidak selalu) ini berarti karakter ASCII LINE-FEED (LF), yang, seperti yang Anda katakan, menggerakkan kursor (atau posisi cetak) ke bawah satu baris. Dalam printer atau mesin tik, ini sebenarnya akan memindahkan kertas ke atas satu baris.
Selalu \r
berarti karakter ASCII CARRIAGE-RETURN (CR) yang namanya sebenarnya berasal dari mesin tik mekanik di mana ada kunci carriage-return yang menyebabkan roller ("carriage") yang membawa kertas bergerak ke kanan, ditenagai oleh pegas, sejauh itu akan pergi. Dengan demikian mengatur posisi pengetikan saat ini ke margin kiri.
Pemrograman
Dalam beberapa bahasa pemrograman \n
dapat berarti urutan karakter tergantung platform yang mengakhiri atau memisahkan baris dalam file teks. Misalnya di Perl, print "\n"
menghasilkan urutan karakter yang berbeda di Linux daripada di Windows.
Di Jawa, praktik terbaik, jika Anda ingin menggunakan akhiran garis asli untuk platform runtime, tidak boleh digunakan \n
atau tidak \r
sama sekali. Anda harus menggunakan System.getProperty("line.separator")
. Anda harus menggunakan \n
dan di \r
mana Anda ingin LF dan CR terlepas dari platform (mis. Seperti yang digunakan dalam HTTP, FTP dan protokol komunikasi Internet lainnya).
Unix stty
Dalam shell Unix, stty
perintah dapat digunakan untuk menyebabkan shell menerjemahkan antara berbagai konvensi ini. Misalnya stty -onlcr
akan menyebabkan shell menerjemahkan semua LF keluar ke CR LF.
Linux dan OSX mengikuti konvensi Unix
File teks
File teks masih sangat penting dan banyak digunakan. Misalnya, HTML dan XML adalah contoh file teks. Sebagian besar protokol Internet penting, seperti HTTP, mengikuti konvensi file teks dan menyertakan spesifikasi untuk akhir baris.
Printer
Sebagian besar printer selain yang paling murah, masih menghormati CR dan LF. Bahkan mereka mendasar untuk bahasa deskripsi halaman yang paling banyak digunakan - PCL dan Postscript.
\r\n
tidak apa-apa di Windows tetapi\n\r
tidak, dan saya ingat itu karena\r\n
akronim untuk perawat terdaftar. Saya juga mendengar bahwa\n
itulah yang digunakan orang di Linux dan\r
tidak digunakan sendiri untuk tujuan yang sama\r\n
.\r
digunakan dalam MacOS yang sangat tua. Saya belum memverifikasi fakta-fakta ini.