`^ M` alla fine di ogni riga di file di testo generati in Windows


10

Mi chiedevo perché se apri un file di testo creato nel blocco note di Windows sotto unix scoprirai che ha ^Mdove dovrebbe esserci una nuova linea?

La mia comprensione è che in Windows, ogni riga termina con \r\n, cioè 0x0D0Ain ASCII, mentre ^Mha valore ASCII 0x5E4D. Non riesco a mettere in relazione questi due dall'uno all'altro.


In Windows puoi usare un editor migliore come Notepad ++. Ti permetterà di salvare i file con terminazioni di linea UNIX ma di visualizzarlo in Windows come se avesse terminazioni di linea di Windows. Quindi puoi visualizzarlo su entrambi i sistemi operativi.
Kevin,

Vedi anche la versione di Jeff Atwood
nico,

Risposte:


19

Hai ragione sul fatto che i finali di linea siano importanti; entrambi i sistemi operativi prevedono che la riga termini con "\ n", ma Windows aggiunge anche un "\ r" prima che unix non si aspetti, quindi i programmi unix genereranno "\ r" a modo loro.

Il file in realtà non termina con i due caratteri "^" e "M", è solo un modo comune per rappresentare caratteri non stampabili. I programmi genereranno "^" e una lettera corrispondente al valore del byte, che inizia con A per 1. M è la 13a lettera, e '\ r' è il codice ASCII 13 (o 0xD, come hai detto), quindi vedi "^ M"


2
Questa è anche una scorciatoia per Ctrl-M, che è come ottenere quel personaggio con la tastiera.
Steven Pritchard,

7
È possibile utilizzare le utilità della riga di comando dos2unixe unix2dosconvertire file di testo tra formati.
Chris Nava,

1
@Chris Vero, ma non ha davvero nulla a che fare con la domanda
Michael Mrozek

Grazie! (1) Mi chiedevo quali programmi generassero caratteri non stampabili in quel modo? Ad esempio, tutti gli editor / visualizzatori di testo funzionano in questo modo? (2) quali tipi di caratteri non stampabili vengono trattati in questo modo e quali tipi non lo sono? Ad esempio, perché non visualizzano i visualizzatori di testo ^Jper \n?
Tim

1
La rappresentazione ^ M precede gli editor di testo della GUI di anni, se non di decenni.
Chris Nava,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.