CR e LF
L'American Standard Code for Information Interchange (ASCII) ha definito i caratteri di controllo tra cui CARRIAGE-RETURN (CR) e LINE-FEED (LF) che sono stati (e sono tuttora) utilizzati per controllare la posizione di stampa sulle stampanti in modo analogo al macchine da scrivere meccaniche che hanno preceduto le prime stampanti per computer.
Dipendenza dalla piattaforma
In Windows il tradizionale separatore di riga nei file di testo è CR seguito da LF
Nei vecchi sistemi Apple Macintosh (pre-OSX), il tradizionale separatore di riga nei file di testo era CR
In Unix e Linux, il tradizionale separatore di riga nei file di testo è LF.
\ n e \ r
In molti linguaggi di programmazione e scripting \n
significa "nuova riga". A volte (ma non sempre) ciò significa che il carattere ASCII LINE-FEED (LF), che, come dici tu, sposta il cursore (o la posizione di stampa) su una riga. In una stampante o macchina da scrivere, ciò sposterebbe effettivamente la carta su una riga.
Invariabilmente \r
significa il carattere ASCII CARRIAGE-RETURN (CR) il cui nome in realtà deriva da macchine da scrivere meccaniche in cui era presente una chiave di ritorno a capo che faceva spostare il rullo ("carrello") che trasportava la carta a destra, alimentato da una molla, fino in fondo. Impostando così l'attuale posizione di digitazione sul margine sinistro.
Programmazione
In alcuni linguaggi di programmazione \n
può significare una sequenza di caratteri dipendente dalla piattaforma che termina o separa le righe in un file di testo. Ad esempio in Perl, print "\n"
produce una diversa sequenza di caratteri su Linux rispetto a Windows.
In Java, la migliore pratica, se si desidera utilizzare i finali di riga nativi per la piattaforma di runtime, non è di utilizzare \n
o \r
affatto. Si dovrebbe usare System.getProperty("line.separator")
. Dovresti usare \n
e \r
dove vuoi LF e CR indipendentemente dalla piattaforma (ad es. Come usato in HTTP, FTP e altri protocolli di comunicazione Internet).
Unix stty
In una shell Unix, il stty
comando può essere usato per far tradurre la shell tra queste varie convenzioni. Ad esempio stty -onlcr
, la shell tradurrà successivamente tutti gli LF in uscita in LF CR.
Linux e OSX seguono le convenzioni Unix
File di testo
I file di testo sono ancora estremamente importanti e ampiamente utilizzati. Ad esempio, HTML e XML sono esempi di file di testo. La maggior parte dei protocolli Internet importanti, come HTTP, segue le convenzioni sui file di testo e include le specifiche per i finali di linea.
stampanti
La maggior parte delle stampanti diverse da quelle molto economiche, rispettano ancora CR e LF. In realtà sono fondamentali per i linguaggi di descrizione della pagina più utilizzati - PCL e Postscript.
\r\n
va bene in Windows ma\n\r
non lo è, e lo ricordo perché\r\n
è l'acronimo di un'infermiera registrata. Ho anche sentito che\n
è quello che la gente usa in Linux e\r
non è usata da sola per lo stesso scopo di\r\n
.\r
viene utilizzato in MacOS davvero vecchi. Non ho verificato questi fatti, comunque.