GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana \n dan \r ditangani secara berbeda di Linux dan Windows?

Saya pikir \n menggerakkan jarum ke bawah, dan \r memindahkan jarum ke awal baris (rata kiri)? Saya tidak yakin, meskipun

Ini benar, kurang lebih, tetapi sebagian besar merupakan keingintahuan sejarah. Awalnya, linefeed (LF) digunakan untuk memajukan kertas satu baris pada printer dan terminal hardcopy (teleprinter); carriage return (CR) mengembalikan print head ke awal baris.

Ini mungkin masih berfungsi pada printer modern saat digunakan dalam "mode teks", tetapi sebaliknya tidak terlalu relevan saat ini.

Lagi pula, saya diberitahu bahwa Windows dan Linux menangani baris baru dan carriagereturn secara berbeda.

Perbedaannya sederhana:perancang OS harus memilih cara merepresentasikan awal baris baru dalam teks di file komputer. Untuk berbagai alasan historis, di dunia Unix/Linux, satu karakter LF dipilih sebagai penanda baris baru; MS-DOS memilih CR+LF, dan Windows mewarisinya. Dengan demikian, platform yang berbeda menggunakan konvensi yang berbeda.

Dalam praktiknya, ini menjadi masalah yang semakin berkurang. Penanda baris baru benar-benar hanya relevan untuk pogram yang memproses "teks biasa", dan jumlahnya tidak banyak - sebagian besar hanya memengaruhi kode sumber program, file konfigurasi, dan beberapa file teks sederhana dengan dokumentasi. Saat ini sebagian besar program yang menangani jenis file ini (editor, kompiler, dll.) dapat menangani kedua konvensi baris baru, jadi apa pun yang Anda pilih.

Ada beberapa kasus di mana alat bersikeras pada konvensi baris baru "mereka" (mis. Skrip shell Unix tidak boleh menggunakan CR+LF), dalam hal ini Anda harus menggunakan yang benar.


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 analog dengan mesin tik mekanis yang mendahului printer komputer awal.

Ketergantungan platform

Di Windows pemisah baris tradisional dalam file teks adalah CR diikuti oleh LF

Di sistem Apple Macintosh lama (sebelum OSX), pemisah baris 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, memindahkan kursor (atau posisi cetak) ke bawah satu baris. Di 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 dimana terdapat kunci carriage-return yang menyebabkan roller ("carriage") yang membawa kertas bergerak ke kanan, ditenagai oleh pegas, seperti sejauh itu akan pergi. Dengan demikian mengatur posisi pengetikan saat ini ke margin kiri.

Pemrograman

Dalam beberapa bahasa pemrograman \n dapat berarti urutan karakter yang bergantung pada 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 Java, praktik terbaik, jika Anda ingin menggunakan akhiran baris asli untuk platform runtime, jangan menggunakan \n atau \r sama sekali. Anda harus menggunakan System.getProperty("line.separator") . Anda harus menggunakan \n dan \r di mana Anda menginginkan LF dan CR apa pun platformnya (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 selanjutnya menerjemahkan semua LF yang 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 akhiran baris.

Printer

Sebagian besar printer selain yang paling murah, masih menghargai CR dan LF. Bahkan mereka adalah dasar untuk bahasa deskripsi halaman yang paling banyak digunakan - PCL dan Postscript.


Singkatnya, diperlukan untuk printer, tetapi sekarang OS melakukannya sedikit berbeda. Dalam kebanyakan kasus, tidak apa-apa melakukan CR dan LF dengan melakukan \r\n dan dalam kebanyakan kasus, ini akan berfungsi dengan baik.


Linux
  1. Cara Mengakses Sistem File Linux di Windows 10 dan WSL 2

  2. Cara Menginstal Wine Dan Menjalankan Aplikasi Windows Di Linux

  3. Cara dual boot Windows 10 dan MX Linux

  1. Cara dual-boot Linux dan Windows

  2. Cara dual boot Kali Linux dan Windows 10

  3. Cara Membuat Server TeamSpeak di Linux, Windows, dan macOS

  1. Cara Mengedit File Host Anda di Linux, Windows, dan macOS

  2. Bagaimana membandingkan dan menggabungkan file teks di Linux

  3. Cara membandingkan dan menggabungkan file teks di Linux (bagian 2)