web-dev-qa-db-fra.com

Exécuter un script créé dans Notepad (Windows) sur Ubuntu

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?

14
Albert

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
20
Pilot6

Sous Windows, vous devez modifier le format de fin de ligne (EOL) dans Notepad ++ en UNIX:

enter image description here

De cette façon, cela fonctionnera aussi sur Ubuntu.

6
user284234

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 ...]
2
A.B.

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.

1
Russell McDonell

Vous pouvez utiliser Vim en mode Ex:

ex -bsc '%s/\r//|x' file
  1. % sélectionner toutes les lignes

  2. s substitute

  3. \r retour chariot

  4. x save and close

0
Steven Penny