`^ M` di akhir setiap baris file teks yang dihasilkan di bawah Windows

10

Saya bertanya-tanya mengapa jika Anda membuka file teks yang dibuat di notepad Windows di bawah unix Anda akan menemukan bahwa ia memiliki di ^Mmana harus ada baris baru?

Pemahaman saya adalah bahwa di Windows, setiap baris diakhiri dengan \r\n, yaitu 0x0D0Adalam ASCII, sementara ^Mmemiliki nilai ASCII 0x5E4D. Saya tidak bisa menghubungkan keduanya dari satu ke yang lain.

Tim
sumber
Di Windows Anda dapat menggunakan editor yang lebih baik seperti Notepad ++. Ini akan memungkinkan Anda untuk menyimpan file dengan ujung baris UNIX tetapi melihatnya di Windows seolah-olah memiliki ujung garis Windows. Maka Anda dapat melihatnya di kedua OS baik.
Kevin
Lihat juga pendapat Jeff Atwood tentang hal itu
nico

Jawaban:

19

Anda benar tentang akhir baris menjadi penting; kedua OS mengharapkan baris diakhiri dengan "\ n", tetapi Windows juga menambahkan "\ r" sebelum unix itu tidak diharapkan, jadi program unix akan menampilkan "\ r" dengan cara mereka sendiri.

File tidak benar-benar berakhir dengan dua karakter "^" dan "M", itu hanya cara yang umum untuk mewakili karakter yang tidak diinginkan. Program akan menampilkan "^" dan huruf yang sesuai dengan nilai byte, dimulai dengan A untuk 1. M adalah huruf ke-13, dan '\ r' adalah kode ASCII 13 (atau 0xD, seperti yang Anda katakan), jadi Anda melihat "^ M "

Michael Mrozek
sumber
2
Itu juga kependekan dari Ctrl-M, yaitu bagaimana Anda mendapatkan karakter itu dengan keyboard.
Steven Pritchard
7
Anda dapat menggunakan utilitas baris perintah dos2unixdan unix2dosuntuk mengkonversi file teks antar format.
Chris Nava
1
@ Chris Benar, tetapi tidak benar-benar ada hubungannya dengan pertanyaan
Michael Mrozek
Terima kasih! (1) Saya bertanya-tanya program apa yang akan menghasilkan karakter yang tidak patut? Sebagai contoh, apakah semua editor teks / penonton bekerja seperti itu? (2) karakter apa yang tidak patut diperlakukan seperti itu, dan karakter apa yang tidak? Sebagai contoh, mengapa tidak ^Juntuk output pemirsa teks \n?
Tim
1
Representasi ^ M mendahului editor teks GUI selama bertahun-tahun, jika tidak beberapa dekade.
Chris Nava