29 Aprile 2017 di Daniele Frulla
Quante volte hai avuto il bisogno di eseguire uno script in Linux? Hai editato il file di testo con windows e sfortunatamente il tuo script genera un errore nell’esecuzione…
I files di testo sono semplicissimi file ove al proprio interno vengono collocati caratteri ASCII. I caratteri ASCII possono essere visibili (alfabeto, punteggiatura, numeri) o invisibili (caratteri particolari per indicare un ritorno a capo o nuova riga).
Sembrerebbe che tutti i sistemi operativi potessero utilizzare il medesimo standard per definire un file di testo, eppure non è stato così.
Il problema era il definire quale carattere dovesse indicare il ritorno a capo a fine riga. Alla fine le scelte sono state diverse per i vari sistemi operativi:
CR in binario 0001101 indica il carattere Carriage Return.
LF in binario 0001010 indica Line Feed.
Mettere un solo carattere che indichi la fine linea è sicuramente più vantaggioso che metterne due, ma evidentemente ad alcuni sistemi operativi servivano 2 caratteri per esempio per gestire le testine delle stampanti ad aghi.
Quando aprite un file su sistemi Linux o Windows fate bene attenzione!
Per trasformare un file di testo Dos in formato Unix vi sono diverse strade:
dos2unix inputfile > outputfile
sed -e ‘s/\r$//’ inputfile > outputfile # DOS -> UNIX (rimuove CR)
Per trasformare un file di testo Unix in formato Dos:
unix2dos inputfile
sed -e ‘s/$/\r/’ inputfile > outputfile # UNIX -> DOS (aggiunge CR)
Quindi state molto attenti quando lanciate uno script in Linux. Se vedete un carattere del tipo ^M probabilmente il file è stato editato con un notepad windows!
Lascia un commento