`^ M` à la fin de chaque ligne de fichiers texte générés sous Windows

10

Je me demandais pourquoi si vous ouvrez un fichier texte créé dans le bloc-notes Windows sous Unix, vous constaterez qu'il a ^Moù il devrait y avoir une nouvelle ligne?

Ma compréhension est que dans Windows, chaque ligne se termine par \r\n, c'est- 0x0D0Aà- dire en ASCII, alors qu'elle ^Ma une valeur ASCII 0x5E4D. Je ne peux pas les relier l'un à l'autre.

Tim
la source
Sous Windows, vous pouvez utiliser un meilleur éditeur comme Notepad ++. Il vous permettra d'enregistrer les fichiers avec des fins de ligne UNIX mais de les afficher dans Windows comme s'il avait des fins de ligne Windows. Ensuite, vous pouvez le voir dans les deux systèmes d'exploitation.
Kevin
Voir aussi le point de vue de Jeff Atwood
nico

Réponses:

19

Vous avez raison sur l'importance des fins de ligne; les deux systèmes d'exploitation s'attendent à ce que la ligne se termine par "\ n", mais Windows ajoute également un "\ r" avant que unix ne s'y attende, donc les programmes unix afficheront le "\ r" à leur manière.

Le fichier ne se termine pas réellement par les deux caractères "^" et "M", c'est juste une façon courante de représenter les caractères non imprimables. Les programmes afficheront "^" et une lettre correspondant à la valeur de l'octet, commençant par A pour 1. M est la 13ème lettre, et "\ r" est le code ASCII 13 (ou 0xD, comme vous l'avez dit), donc vous voyez "^ M "

Michael Mrozek
la source
2
C'est aussi un raccourci pour Ctrl-M, c'est ainsi que vous obtenez ce personnage avec le clavier.
Steven Pritchard
7
Vous pouvez utiliser les utilitaires de ligne de commande dos2unixet unix2dosconvertir des fichiers texte entre formats.
Chris Nava
1
@Chris Vrai, mais n'a vraiment rien à voir avec la question
Michael Mrozek
Merci! (1) Je me demandais quels programmes produiraient des caractères non imprimables de cette façon? Par exemple, tous les éditeurs / visualiseurs de texte fonctionnent-ils de cette façon? (2) quels types de caractères non imprimables sont traités de cette façon, et quels types ne le sont pas? Par exemple, pourquoi ne sont pas du texte de sortie de téléspectateurs ^Jpour \n?
Tim
1
La représentation ^ M est antérieure aux éditeurs de texte de l'interface graphique par des années, voire des décennies.
Chris Nava