Bahasa Indonesia

Alat pengembang · Perbandingan teks

Mengapa Windows dan Unix Tidak Setuju pada Akhiran Baris: Kisah CR, LF dan CRLF

· Latar belakang

perbedaan teks akhiran baris sejarah perangkat lunak

Tiga jalur penanda baris baru menyatu menjadi pasangan baris teks yang sama
Ilustrasi vektor ToolAcre asli

Menelusuri akhiran baris dari mesin tik dan teletipe hingga sistem operasi modern dan menjelaskan mengapa dua konvensi masih ada berdampingan di setiap proyek lintas platform.

Satu karakter yang tidak terlihat, gesekan selama beberapa dekade — dibuka dengan gangguan lintas platform yang terus-menerus

Akhiran baris tidak terlihat di editor biasa namun dapat berpengaruh pada file dan protokol. Namun, di ToolAcre, CR, LF dan CRLF dinormalisasi sebelum perbandingan garis. Sepasang yang berbeda hanya pada pemisah tersebut menghasilkan susunan baris yang sama dan hasil yang identik.

Perilaku tersebut menyelesaikan pertanyaan praktis untuk rute ini sekaligus membatasi apa yang dapat didiagnosis. Perbandingan tidak dapat membuktikan baris baru mana yang memuat file asli setelah teks sampai ke editornya. Alat byte-aware diperlukan untuk pelestarian atau pemeriksaan protokol.

Carriage return dan line feed pada mesin tik — menjelaskan dua tindakan fisik yang awalnya dijelaskan oleh karakter tersebut

Istilah pengangkutan kembali dan umpan baris memiliki arti fisik dan historis, namun repositori tidak mengandung sumber mesin tik. Mengulangi cerita asal mekanis dari ingatan akan melanggar kontrak bukti meskipun akun tersebut terdengar familier.

Oleh karena itu artikel ini memperlakukan CR sebagai ` ` code unit and LF as ` ` hanya jika implementasi menggunakannya. Penjelasan sejarah sebaiknya ditambahkan kemudian dari standar atau arsip primer daripada dipinjam dari garis besar yang secara eksplisit bukan merupakan sumbernya.

Makna mesin tik adalah klaim sejarah yang memerlukan sumber eksternal

Demikian pula, file sumber tidak mendokumentasikan konvensi teletype atau keputusan awal sistem operasi. Mereka hanya mengungkapkan pilihan kompatibilitas di JavaScript saat ini: ganti setiap CRLF atau satu-satunya CR dengan LF sebelum dipecah.

Transformasi tersebut menerima teks yang ditempelkan yang dihasilkan berdasarkan beberapa konvensi tanpa mengisi output dengan perubahan yang hanya berakhiran. Ini adalah keputusan implementasi yang terlihat dalam satu ekspresi reguler dan disematkan oleh pengujian untuk ketiga bentuk tersebut.

Teletipe dan silsilah sistem operasi berada di luar bukti penyimpanan

Adalah umum untuk mengasosiasikan Unix dengan LF, Windows dengan CRLF dan sistem lama dengan CR tunggal, namun repositori saat ini tidak dapat berfungsi sebagai bukti historis dari adopsi tersebut. Klaim aman berlaku: ketiga masukan menjadi LF di dalam `splitLines`.

Terminal LF tidak membuat baris kosong terakhir, sedangkan baris kosong di tengah tetap ada. Perbedaan ini berarti konten logis tetap dipertahankan meskipun perbedaan pemisah fisik dihapus. Perbandingannya berorientasi pada garis, bukan mempertahankan byte.

Kode tersebut membuktikan tiga konvensi menjadi normal; hal ini tidak membuktikan mengapa sistem mengadopsinya

Beberapa protokol jaringan dan pesan menentukan terminator jalur yang tepat, namun persyaratannya harus berdasarkan spesifikasinya. Normalisasi ToolAcre membuatnya tidak cocok untuk membuktikan kesesuaian dengan format kawat karena bukti pemisah asli sengaja dihilangkan.

Gunakan penampil hex atau validator protokol sebelum menguraikan ketika urutan CRLF yang tepat penting. Hasil Text diff yang bersih dapat mengonfirmasi kecocokan baris logis dan sekaligus menyembunyikan cacat tingkat transportasi. Kedua pengamatan tersebut mungkin benar karena alat tersebut menjawab pertanyaan yang berbeda.

Persyaratan protokol memerlukan spesifikasinya sendiri dan dihilangkan di sini

Bandingkan `alpha beta`, `alpha beta`, dan `alpha beta` secara berpasangan. Setiap pasangan menghasilkan dua baris, alpha dan beta, tanpa penambahan atau penghapusan. Opsi abaikan spasi bukan penyebab kesamaan ini; normalisasi sudah berlangsung saat pemisahan.

Tambahkan spasi tambahan ke satu baris beta dan mode biasa sekarang akan melaporkan perbedaannya. Aktifkan Abaikan spasi dan itu mungkin hilang. Urutan ini memisahkan penanganan baris baru dari penanganan spasi baris dan mencegah pemberian kredit pada opsi yang salah.

Contoh praktis: ketiga bentuk akhir dibandingkan sama sebelum opsi spasi

Rute ini tidak mengonfigurasi editor, menulis ulang file, menyetel atribut Git, atau mengonversi akhiran secara massal. Itu juga tidak menampilkan pemisah asli di baris hasil. String yang ditempelkan memasuki alur perbandingan, bukan utilitas migrasi baris baru.

Penyebab historis dan standar protokol dihilangkan dari sumber yang tertunda. Pembatasan tersebut menyisakan artikel yang lebih kecil namun tepat: apa yang dilakukan tiga konvensi dalam implementasi ini, baris kosong mana yang tersisa dan mengapa kesetaraan di sini tidak membentuk identitas byte.

Kesimpulan: ketahui konvensi mana yang terdapat dalam teks Anda — rangkum sejarahnya dan bagaimana perbandingan Teks ToolAcre membantu memastikan apakah perbedaannya hanya pada akhir baris

Ketahui bukti mana yang selamat dari alat tersebut. Setelah normalisasi, ToolAcre dapat membandingkan konten baris logis di seluruh pemisah umum. Ia tidak dapat memberi tahu Anda konvensi mana yang digunakan sumber atau apakah konsumen hilir memerlukan satu urutan byte yang tepat.

Gunakan perbedaan browser untuk tinjauan manusia dan pemeriksaan tingkat byte untuk penegakan repositori atau protokol. Suatu alat dapat diandalkan jika transformasinya bersifat eksplisit; pengulas tetap bertanggung jawab untuk memilih salah satu yang mempertahankan properti yang perlu mereka verifikasi.