`^ M` no final de cada linha de arquivos de texto gerados no Windows

10

Fiquei me perguntando por que, se você abrir um arquivo de texto feito no bloco de notas do Windows no unix, descobrirá que ele tem ^Monde deve haver uma nova linha?

Meu entendimento é que, no Windows, cada linha termina com \r\n, ou seja, 0x0D0Aem ASCII, enquanto ^Mpossui valor ASCII 0x5E4D. Não posso relacionar esses dois de um para o outro.

Tim
fonte
No Windows, você pode usar um editor melhor como o Notepad ++. Ele permitirá que você salve os arquivos com finais de linha UNIX, mas visualize-os no Windows como se tivessem finais de linha do Windows. Então você pode vê-lo em ambos OS bem.
Kevin
Veja também a opinião de Jeff Atwood
nico

Respostas:

19

Você está certo sobre os finais de linha serem importantes; ambos os sistemas operacionais esperam que a linha termine com "\ n", mas o Windows também adiciona um "\ r" antes que o unix não espere, para que os programas unix produzam o "\ r" à sua maneira.

O arquivo não termina com os dois caracteres "^" e "M", é apenas uma maneira comum de representar caracteres não imprimíveis. Os programas produzirão "^" e uma letra correspondente ao valor do byte, começando com A para 1. M é a 13ª letra e '\ r' é o código ASCII 13 (ou 0xD, como você disse), então você vê "^ M "

Michael Mrozek
fonte
2
Isso também é uma abreviação para Ctrl-M, que é como você obtém esse caractere com o teclado.
Steven Pritchard
7
Você pode usar os utilitários de linha de comando dos2unixe unix2dosconverter arquivos de texto entre formatos.
Chris Nava
11
@ Chris É verdade, mas realmente não tem nada a ver com a questão
Michael Mrozek
Obrigado! (1) Eu queria saber quais programas produzirão caracteres não imprimíveis dessa maneira? Por exemplo, todos os editores / visualizadores de texto funcionam dessa maneira? (2) que tipos de caracteres não imprimíveis são tratados dessa maneira e quais não são? Por exemplo, por que não texto de saída telespectadores ^Jpara \n?
Tim
11
A representação ^ M antecede os editores de texto da GUI por anos, se não décadas.
Chris Nava