Je pense que \n déplace l'aiguille vers le bas et \r déplace l'aiguille au début d'une ligne (alignement à gauche) ? Je ne suis pas sûr, cependant
C'est vrai, plus ou moins, mais c'est surtout une curiosité historique. À l'origine, le saut de ligne (LF) servait à faire avancer le papier d'une ligne sur les imprimantes et les terminaux papier (téléimprimeurs); le retour chariot (CR) ramène la tête d'impression au début de la ligne.
Cela fonctionne probablement encore sur les imprimantes modernes lorsqu'elles sont utilisées en "mode texte", mais n'a par ailleurs que peu d'importance aujourd'hui.
Quoi qu'il en soit, on m'a dit que Windows et Linux gèrent les nouvelles lignes et les retours chariot différemment.
La différence est simple :les concepteurs de systèmes d'exploitation devaient choisir comment représenter le début d'une nouvelle ligne dans le texte des fichiers informatiques. Pour diverses raisons historiques, dans le monde Unix/Linux, un seul caractère LF a été choisi comme marqueur de nouvelle ligne; MS-DOS a choisi CR+LF, et Windows en a hérité. Ainsi, différentes plates-formes utilisent différentes conventions.
En pratique, cela devient de moins en moins un problème. Le marqueur de nouvelle ligne n'est vraiment pertinent que pour les programmes qui traitent du "texte brut", et il n'y en a pas beaucoup - il n'affecte principalement que le code source du programme, les fichiers de configuration et certains fichiers texte simples avec documentation. De nos jours, la plupart des programmes gérant ce type de fichiers (éditeurs, compilateurs, etc.) peuvent gérer les deux conventions de retour à la ligne, donc peu importe celle que vous choisissez.
Il y a des cas où les outils insistent sur "leur" convention de retour à la ligne (par exemple, les scripts shell Unix ne doivent pas utiliser CR+LF), auquel cas vous devez utiliser la bonne.
CR et LF
Le code standard américain pour l'échange d'informations (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 au machines à écrire mécaniques qui ont précédé les premières imprimantes informatiques.
Dépendance à la plate-forme
Sous Windows, le séparateur de ligne traditionnel dans les fichiers texte est CR suivi de LF
Dans les anciens systèmes Apple Macintosh (avant 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) vers le bas d'une ligne. Dans une imprimante ou une machine à écrire, cela ferait remonter le papier d'une ligne.
Invariablement \r
désigne le caractère ASCII RETOUR CHARIOT (CR) dont le nom vient en fait des machines à écrire mécaniques où il y avait une touche de retour chariot qui faisait déplacer le rouleau ("chariot") qui portait le papier vers la droite, actionné par un ressort, comme aussi loin que ça irait. Définissant ainsi la position de frappe actuelle sur la marge de gauche.
Programmation
Dans certains langages de programmation \n
peut signifier une séquence de caractères dépendant 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 sous Linux que sous 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 utiliser \n
ou \r
du tout. Vous devez utiliser System.getProperty("line.separator")
. Vous devez utiliser \n
et \r
où vous voulez LF et CR quelle que soit la plate-forme (par exemple, comme utilisé dans HTTP, FTP et d'autres protocoles de communication Internet).
Sty Unix
Dans un shell Unix, le stty
La commande peut être utilisée pour amener le shell à traduire entre ces diverses conventions. Par exemple stty -onlcr
obligera le shell à traduire 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 de fichier 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 largement utilisés - PCL et Postscript.
En bref, c'était nécessaire pour les imprimantes, mais maintenant, les systèmes d'exploitation le font légèrement différemment. Dans la plupart des cas, il suffit de faire à la fois CR et LF en faisant \r\n
et dans la plupart des cas, cela fonctionnera bien.