Problème de lecture / exécution d'un fichier sous Linux créer sous Windows.
Sous Windows (DOS), les lignes de fichier se terminent par les caractères spéciaux "\r\n".
Sous UNIX, les lignes de fichier se terminent par les caractères spéciaux "\n".
Les caractères spéciaux permettant le retour chariot étant différents sous Windows (DOS) et sous Linux (UNIX), il faut penser à les convertir.
Différentes méthodes permettent de le faire.
Avec la commande sed :
$ sed -i 's/\r//g' /nom_du_fichier
Sinon, le caractère "\r" est représenté par "^M" qui s'obtient par la séquence de touches suivantes : "CTRL-V" + "CTRL-M"
$ sed -i 's/^M//' /nom_du_fichier
Avec la commande tr :
$ tr -d '\r' < /mon_fichier_source > /mon_fichier_destination
A l'inverse, convertir un fichier UNIX vers DOS
$ sed 's/$/^M/' /nom_du_fichier
Source : http://www.commentcamarche.net/faq/5978-sed-conversion-retours-chariots-...