CR et LF
L'American Standard Code for Information Interchange (ASCII) définit les caractères de contrôle, y compris CARRIAGE-RETURN (CR) et LINE-FEED (LF) qui étaient (et sont toujours) utilisés pour contrôler la position d'impression sur les imprimantes d'une manière analogue à la machines à écrire mécaniques qui ont précédé les premières imprimantes informatiques.
Dépendance à la plateforme
Sous Windows, le séparateur de ligne traditionnel dans les fichiers texte est CR suivi de LF
Dans les anciens systèmes Apple Macintosh (antérieurs à OSX), le séparateur de ligne traditionnel dans les fichiers texte était CR
Sous Unix et Linux, le séparateur de ligne traditionnel dans les fichiers texte est LF.
\ n et \ r
Dans de nombreux langages de programmation et de script \n
signifie «nouvelle ligne». Parfois (mais pas toujours), cela signifie le caractère ASCII LINE-FEED (LF), qui, comme vous le dites, déplace le curseur (ou la position d'impression) d'une ligne vers le bas. Dans une imprimante ou une machine à écrire, cela déplacerait le papier d'une ligne.
Invariablement \r
signifie le caractère ASCII CARRIAGE-RETURN (CR) dont le nom provient en fait de machines à écrire mécaniques où il y avait une touche de retour chariot qui a fait déplacer le rouleau ("chariot") qui portait le papier vers la droite, alimenté par un ressort, aussi loin que cela irait. Définissant ainsi la position de frappe actuelle sur la marge gauche.
Programmation
Dans certains langages de programmation, cela \n
peut signifier une séquence de caractères dépendante de la plate-forme qui termine ou sépare des lignes dans un fichier texte. Par exemple, en Perl, print "\n"
produit une séquence de caractères différente sur Linux que sur Windows.
En Java, la meilleure pratique, si vous souhaitez utiliser les fins de ligne natives pour la plate-forme d'exécution, est de ne pas les utiliser \n
ou pas \r
du tout. Vous devez utiliser System.getProperty("line.separator")
. Vous devez utiliser \n
et \r
où vous voulez LF et CR indépendamment de la plate-forme (par exemple, comme utilisé dans HTTP, FTP et autres protocoles de communication Internet).
Unix stty
Dans un shell Unix, la stty
commande peut être utilisée pour faire traduire le shell entre ces différentes conventions. Par exemple stty -onlcr
, le shell traduira par la suite tous les LF sortants en CR LF.
Linux et OSX suivent les conventions Unix
Fichiers texte
Les fichiers texte sont toujours extrêmement importants et largement utilisés. Par exemple, HTML et XML sont des exemples de fichier texte. La plupart des protocoles Internet importants, tels que HTTP, suivent les conventions des fichiers texte et incluent des spécifications pour les fins de ligne.
Imprimantes
La plupart des imprimantes autres que les moins chères respectent toujours CR et LF. En fait, ils sont fondamentaux pour les langages de description de page les plus utilisés - PCL et Postscript.
\r\n
c'est correct dans Windows mais ce\n\r
n'est pas le cas, et je m'en souviens parce que\r\n
c'est un acronyme pour infirmière autorisée. J'entends également que\n
c'est ce que les gens utilisent sous Linux et\r
n'est pas utilisé seul dans le même but que\r\n
.\r
est utilisé dans un MacOS vraiment ancien. Je n'ai cependant pas vérifié ces faits.