Nous avons 10 PC avec une version d’Ubuntu et seulement un accès à distance. Lors de certaines mises à niveau de logiciels personnalisés, je n'ai pas remarqué que les fins de ligne de certains scripts étaient la version Windows (CR + LF) et non la version Unix (LF). Alors maintenant, quand je veux lancer le script, cela donne une erreur:
bash: /usr/local/bin/portsee: /usr/bin/python^M: bad interpreter: No such file or directory
Existe-t-il un moyen de modifier toutes les fins de ligne dans un script à partir de terminal. Le fait est que je ne peux installer aucun nouveau logiciel sur ce groupe de PC.
dos2unix
Vous pouvez utiliser le programme dos2unix
, spécialement conçu pour cela:
dos2unix file.txt
remplacera tous les CR de toutes les lignes, opération en place.
Pour enregistrer la sortie dans un autre fichier:
dos2unix -n file.txt output.txt
Vous devrez peut-être d'abord l'installer en:
Sudo apt-get install dos2unix
sed
Ou vous pouvez utiliser sed
pour remplacer tous les CR (\r
) des fins de ligne:
sed -i.bak 's/\r$//' file.txt
Avec l'option -i
, le fichier sera édité sur place et le fichier d'origine sera sauvegardé sous le nom file.txt.bak
.