^M carattere di fine riga
Il carattere ^M è il simbolo di fine riga utilizzato dagli editor windows e mal interpretati da unix/linux.
Prendiamo questo file, scritto con il notepad:
$ cat appo.sh
#!/bin/bash
echo "ciao"
Questo dovrebbe stampare “ciao”, ma se eseguito va in errore:
$ ./appo.sh
./appo.sh: line 2: $'\r': command not found
Se aggiungiamo l’opzione -v al cat, vediamo che…
$ cat -v appo.sh
#!/bin/bash^M
^M
echo "ciao"^M
Ops.. i ^M.. questi vengono interpretati come caratteri e non come “a capo”..
ripuliamo il file..
abbiamo un modo velocissimo per rimediare, dalla shell, sia usando un comando apposito sia utilizzando il perl, il risultato è lo stesso.
Dalla shell, digitate:
dos2unix appo.sh
Questo sovrascrive il file stesso convertendo i ^M (nelle versioni linux, nelle unix dovete redirigere su un nuovo file).
$ dos2unix appo.sh
dos2unix: converting file appo.sh to Unix format ...
$ cat -v appo.sh
#!/bin/bash
echo "ciao"
oppure, per utilizzare il perl, digitate:
$ perl -pi -e 's/\r//g' appo.sh
$ cat -v appo2.sh
#!/bin/bash
echo "ciao"
Adesso funziona..
$ ./appo.sh
ciao