79 votes

Comment corriger "$' \r Erreurs " : commande non trouvée " en exécutant des scripts Bash dans WSL ?

J'obtiens une erreur dans le WSL en essayant d'utiliser junyanz/pytorch-CycleGAN-et-pix2pix .

J'ai suivi toutes les étapes d'installation avec succès sur Windows 10 x64 en utilisant les étapes à l'adresse suivante PyTORCH sur Windows 10 : une instruction avec des captures d'écran , puis Ubuntu pour Windows avec le bureau GitHub Comment installer et utiliser le Shell Linux Bash sur Windows 10 .

Mais je suis bloqué aux dernières étapes.

C'est là que j'essaie de télécharger ou d'entraîner le modèle dans Windows. En utilisant par exemple l'invite Ubuntu Linux, je navigue manuellement à l'endroit approprié et tape une commande comme celle ci-dessous (j'ai aussi essayé en mode su)

bash pretrained_models/download_pix2pix_model.sh facades_label2photo

Je reçois immédiatement une erreur, toujours la même, semblable à celle-ci :

root@Azure:/mnt/c/Users/vincent/Downloads/vision/pytorch-CycleGAN-and-pix2pix# bash pretrained_models/download_pix2pix_model.sh facades_label2photo
pretrained_models/download_pix2pix_model.sh: line 2: $'\r': command not found
Note: available models are edges2shoes, sat2map, and facades_label2photo
pretrained_models/download_pix2pix_model.sh: line 4: $'\r': command not found
]pecified [facades_label2photo
pretrained_models/download_pix2pix_model.sh: line 6: $'\r': command not found
mkdir: cannot create directory ‘./checkpoints/facades_label2photo\r_pretrained\r’: No such file or directory
pretrained_models/download_pix2pix_model.sh: line 10: $'\r': command not found
WARNING: timestamping does nothing in combination with -O. See the manual
for details.

: No such file or directoryhphoto
pretrained_models/download_pix2pix_model.sh: line 12: $'\r': command not found
pretrained_models/download_pix2pix_model.sh: line 13: $'\r': command not found

Une idée ?

95voto

vectran Points 788

Inside WSL :

sudo apt-get install dos2unix

Ensuite,

dos2unix [file]

Documentation complète :

man dos2unix

Ça a sauvé ma journée, j'espère que ça aidera.

17voto

Akshay Chopra Points 281

Si vous êtes sous Windows,

  1. Ouvrez votre fichier Shell dans NotePad++.
  2. Cliquez sur Editer dans le menu de la barre supérieure, puis choisissez Conversion EOL --> Unix(LF)
  3. Maintenant, copiez ce fichier dans votre système Linux et il devrait fonctionner sans ces erreurs.

16voto

Eliah Kagan Points 111731

steeldriver a raison que le problème est que vous avez des fichiers avec Windows fins de lignes y bash ne peut pas les exécuter. $'\r' est une représentation du caractère retour chariot (CR) qui fait partie des fins de ligne traditionnelles DOS et Windows (CR LF), mais qui est absent des fins de ligne traditionnelles de style Unix (LF).

Comme vous le dites vous tapez la commande pour tenter d'exécuter le script en bash mais remarquez que le script est en fait enregistré à l'extérieur de votre système Ubuntu (WSL), dans votre Windows le répertoire de téléchargement :

/mnt/c/Users/vincent/Downloads/vision/pytorch-CycleGAN-and-pix2pix

Les chemins WSL qui commencent par /mnt/c , donde c peuvent être n'importe quelle lettre de lecteur Windows, sont des chemins qui permettent d'accéder aux fichiers et aux répertoires à l'extérieur de le système Ubuntu. En tant que chemin Windows, c'est-à-dire :

C:\Users\vincent\Downloads\vision\pytorch-CycleGAN-and-pix2pix

qu'un fichier est stocké dans votre système Windows à l'extérieur de la zone où Ubuntu est installé ne garantit pas qu'il utilise des terminaisons de ligne de style Windows au lieu de style Unix. Cependant, si vous avez téléchargé les fichiers avec Git dans Windows sa configuration par défaut est de vous donner des fins de ligne de type Windows.

Le moyen le plus simple de résoudre ce problème est de télécharger les fichiers dont vous avez besoin. à l'intérieur de le système Ubuntu à partir de votre bash rapide. Je vous recommande de mettre à jour complètement le système Ubuntu, puis d'installer git dans Ubuntu, ainsi que build-essential qui fournit des outils utiles dont vous avez besoin pour compiler la plupart des logiciels à partir du code source. Pour les programmes Python, vous n'aurez peut-être pas besoin de build-essential Vous pouvez l'omettre si vous le souhaitez, mais je pense que vous en aurez besoin à un moment ou à un autre.

sudo apt update && sudo apt upgrade && sudo apt install git build-essential

Utilisez ensuite le cd pour aller dans un répertoire où vous souhaitez télécharger le logiciel. Il doit s'agir d'un répertoire de votre système Ubuntu. Par exemple, il peut s'agir de votre répertoire personnel Ubuntu ou d'un répertoire interne. Une fois là, clonez le dépôt de GitHub. Je l'ai fait dans le répertoire src que j'ai créé dans mon répertoire personnel.

cd ~/src
git clone https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix.git

Bien sûr, vous devrez très probablement installer les dépendances en premier. Pour ce faire, il suffit de suivre toutes les instructions officielles . Faites toutes ces étapes sur le système Ubuntu.

7voto

DWD 3 Points 71

J'utilisais VS code dans mon environnement WSL pour éditer le script de bash. Le fait de changer le paramètre de "CRLF" à "LF" dans le coin inférieur droit a réglé le problème pour moi.

VSCode window

5voto

Passing_Pancake Points 11

J'ai rencontré ce problème et la solution a consisté à configurer git pour extraire des fichiers spécifiques en fin de ligne sous Linux.

Vous pouvez ajouter un fichier au nom du répertoire racine de votre git .gitattributes qui configurent des attributs spécifiques pour git ( voir la documentation complète ).

Ajouter les lignes

# Convert to LF line endings on checkout.
*.sh text eol=lf

Pour configurer git en vue d'un checkout .sh avec une terminaison de ligne LF, même sur les machines Windows.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X