J'ai créé un fichier Notepad sous Windows et je l'ai copié dans Ubuntu. Le fichier contient des règles iptables. Après avoir rendu le fichier exécutable à l'aide de chmod +x
et l'avoir exécuté, cela n'a pas fonctionné.
Cependant, lorsque j'ai créé un fichier Ubuntu ( gedit ) et copié le même contenu à partir du fichier Notepad, que je l'ai rendu exécutable et que je l'ai exécuté, cela a fonctionné.
Que dois-je faire pour que le fichier Notepad s'exécute sur Ubuntu?
Windows et Linux ont des symboles de fin de ligne différents.
Vous pouvez installer l'utilitaire dos2unix
qui le corrige:
Sudo apt-get install dos2unix
Exécutez-le de cette façon:
dos2unix -n winfile.txt linuxfile.txt
Il existe également l'utilitaire unix2dos
.
La conversion de Windows à Linux peut également être effectuée sans installer de logiciel spécial en:
tr -d '\r' < winfile.txt > linuxfile.txt
Remarque: Les fichiers d'entrée et de sortie doivent être différents.
Une version sed éditera le fichier "en place":
sed -i 's/\r//g' file.txt
Ou écrivez dans un autre fichier:
sed 's/\r//g' winfile.txt > linuxfile.txt
Sous Windows, vous devez modifier le format de fin de ligne (EOL) dans Notepad ++ en UNIX:
De cette façon, cela fonctionnera aussi sur Ubuntu.
Windows utilise CR + LF pour les sauts de ligne. Sous Linux/Unix, vous avez besoin de LF. Par conséquent, vous devez remplacer CR + LF dans LF dans votre script:
Installez dos2unix
Sudo apt-get install dos2unix
Et corrigez votre script via
dos2unix <your_script_file>
ou via
dos2unix -n <your_script_file> <out_file>
si vous avez besoin d'un fichier de sortie différent
Plus d'informations ici
de man dos2unix
NAME
dos2unix - DOS/Mac to Unix and vice versa text file format converter
SYNOPSIS
dos2unix [options] [FILE ...] [-n INFILE OUTFILE ...]
unix2dos [options] [FILE ...] [-n INFILE OUTFILE ...]
J'utilise cygwin sous Windows.
Ouvrez le fichier avec vi. Puis entrez
:set ff=unix<enter> followed by
:wq<enter>
sauvegarde le fichier avec les caractères de fin de ligne Unix.
Vous pouvez utiliser Vim en mode Ex:
ex -bsc '%s/\r//|x' file
%
sélectionner toutes les lignes
s
substitute
\r
retour chariot
x
save and close