Quando ci si trova a condividere file di testo semplice tra le distribuzioni GNU/Linux e Windows ci si imbatte inevitabilmente nel problema del fine riga o end-of-line (EOF) o newline come tecnicamente viene definito il carattere o la combinazione di caratteri speciali che identificano la fine di una riga di testo ed il conseguente ritorno a capo.

In pratica, quando un file di testo semplice (plain text) scritto in Unix o altro sistema operativo da esso derivato (Unix-like) come BSD o le distribuzioni GNU/Linux, viene aperto in un sistema DOS/Windows si osserva che i paragrafi non sono separati dal ritorno a capo ma continuano sulla stessa riga del paragrafo precedente.

Il problema è causato dal diverso utilizzo dei caratteri speciali ASCII per il controllo dell'interruzione di riga da parte dei sistemi operativi Unix-like e DOS/Windows.

In Unix, così come nelle distro GNU/Linux oppure in Mac OS X, il carattere di controllo per il fine riga è il carattere ASCII Line feed (LF) corrispondente al codice decimale 10 o esadecimale A o all'espressione regolare '\n'.

In DOS e quindi nelle edizioni Windows il fine riga è dato dalla combinazione dei due caratteri di controllo CR + LF ('\r\n\' in espressione regolare) cioè  il Carriage Return (CR), codice decimale 13 o esadecimale D, seguito dal Line Feed (LF).

Nei file di testo Mac precedenti ai sistemi operativi Mac OS X il fine riga era definito dal carattere Carriage Return (CR), mentre nelle nuove edizioni Mac OS X, anch'esse Unix-like, il fine riga è sempre il carattere LF.

Per la conversione di un file di testo semplice da un sistema GNU/Linux a DOS/Windows si possono seguire due strade entrambi abbastanza semplici.

La prima, anche molto banale, consiste nell'utilizzare l'opzione di fine riga presente nella finestra di dialogo "Salva come" degli editori di testo di molte distribuzioni GNU/Linux. Il fine riga predefinito usato nel salvataggio del file di testo sarà Unix/Linux ma basta aprire la lista per selezionare il formato per Windows oppure per le vecchie versioni di Mac OS.

PCpercaso.com :: Fine riga da Unix a Windows in Ubuntu
Fine riga da Unix a Windows in Ubuntu.

A titolo di esempio, nelle due figure sono rappresentate le finestre di dialogo dell'editore di testo Gedit delle distribuzioni Ubuntu 11.10 e Fedora 15; in entrambi ambienti desktop GNOME si potrà selezionare il tipo di fine riga nella finestra di salvataggio del file di testo.

PCpercaso.com :: Fine riga da Unix a Windows in Fedora
Fine riga da Unix a Windows in Ubuntu.

L'altro metodo per le conversioni tra i file di testo dai formati DOS/Windows e Mac a Unix/Linux e viceversa consiste nell'utilizzare dal Terminale le utility del pacchetto Dos2unix.

Il pacchetto è presente in molte delle più diffuse distribuzioni GNU/Linux e nel caso non sia già istallato basta attingere dai repository della distribuzione utilizzata. Ad esempio, per installare Dos2unix in Ubuntu basterà eseguire la linea di comando:

sudo apt-get install dos2unix

Dos2unix contiene le due utility unix2dos e dos2unix che, come è facile intuire, effettuano rispettivamente le conversioni dal formato Unix/Linux a DOS/Windows e viceversa dal formato DOS/Windows a Unix/Linux.

La sintassi dei comandi è molto semplice ed intuitiva anche se non poche sono le opzioni previste per le due utility.

In breve, ecco alcuni esempi di sintassi del comando unix2dos:

  • unix2dos text_file.txt

    Converte il file di testo text_file.txt dal formato Unix/Linux al formato DOS/Windows scrivendo sul medesimo file.

  • unix2dos text_file_1.txt text_file_2.txt text_file_3.txt

    Converte l'elenco dei file di testo text_file_1.txt, text_file_2.txt e text_file_3.txt dal formato Unix al formato DOS/Windows scrivendo sui medesimi file.

  • unix2dos -n unix_file.txt dos_file.txt

    Converte il file di origine unix_file.txt dal formato Unix/Linux  e lo scrive nel file di destinazione dos_file.txt nel formatoDOS/Windows; con l'opzione '-n" si specifica di creare il nuovo file di destinazione.

Per conoscere l'elenco completo delle opzioni e delle funzionalità delle due utility basta ovviamente riferirsi alla man pages digitando il comando:

man dos2unix

oppure l'help rapido:

dos2unix -h

 

Riferimenti esterni: