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 ^M
onde deve haver uma nova linha?
Meu entendimento é que, no Windows, cada linha termina com \r\n
, ou seja, 0x0D0A
em ASCII, enquanto ^M
possui valor ASCII 0x5E4D
. Não posso relacionar esses dois de um para o outro.
Respostas:
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 "
fonte
dos2unix
eunix2dos
converter arquivos de texto entre formatos.^J
para\n
?