Nel settore informatico, un ritorno a capo, o nuova riga o a capo (in inglese, newline, line break o carattere end-of-line / EOL) è un carattere speciale usato per gestire la fine di una riga di testo (e quindi non un vero e proprio carattere visibile sullo schermo). Il nome deriva dal fatto che il carattere successivo dopo di esso viene visualizzato su una nuova riga. Nel gergo delle macchine da scrivere era definito anche "ritorno di carrello".
Gli attuali codici che rappresentano il ritorno a capo variano tra le piattaforme hardware ed i sistemi operativi; ciò può costituire un problema quando è necessario lo scambio di dati tra sistemi che hanno differenti rappresentazioni di tale carattere speciale.
Rappresentazioni
- I sistemi basati sul set di caratteri ASCII standard utilizzano sia LF (line feed, 0xA) o CR (carriage return, 0xD).
- LF: Multics, sistemi Unix e sistemi Unix-like (GNU/Linux, AIX, Xenix, macOS, etc.), BeOS, AmigaOS, RISC OS e altri
- CR+LF: DEC RT-11 e molti altri non-Unix, non-IBM OSes, CP/M, MP/M, MS-DOS, OS/2, Microsoft Windows
- CR: Macchine Commodore, famiglia Apple, Mac OS fino alla versione 9 inclusa
Metodi di conversione
È possibile passare con semplicità da una rappresentazione ad un'altra eseguendo alcuni script a riga di comando.
Script per Sed:
sed -e 's/$/\r/' inputfile > outputfile # UNIX -> DOS (aggiunge CR)
sed -e 's/\r$//' inputfile > outputfile # DOS -> UNIX (rimuove CR)
Script per Perl:
perl -pe 's/\r\n|\n|\r/\r\n/g' inputfile > outputfile # Converti per DOS
perl -pe 's/\r\n|\n|\r/\n/g' inputfile > outputfile # Converti per UNIX
perl -pe 's/\r\n|\n|\r/\r/g' inputfile > outputfile # Converti per Mac (vecchie versioni)
Automatizzazione dell'implementazione richiesta
Alcuni linguaggi tra cui Java ( documentazione ufficiale, su docs.oracle.com.) e C# permettono di scegliere automaticamente il set di caratteri richiesto dal sistema operativo dinamicamente
Esempio per Java
class HelloReturn {
public static void main(String[] args) {
System.out.print(System.lineSeparator());
}
}