Wie behebe ich "$ '\ r': Befehl nicht gefunden" -Fehler beim Ausführen von Bash-Skripten in der WSL?

23

Beim Versuch, junyanz / pytorch-CycleGAN-and-pix2pix zu verwenden, wird in der WSL eine Fehlermeldung angezeigt .

Ich habe alle Installationsschritte unter Windows 10 x 64 mit den Schritten unter PyTORCH unter Windows 10 erfolgreich ausgeführt: Eine Anleitung mit Screenshots , dann Ubuntu für Windows mit GitHub-Desktop. Installieren und Verwenden der Linux Bash Shell unter Windows 10 .

Aber ich bin spätestens bei Schritten gesperrt.

Hier versuche ich, das Modell in Windows herunterzuladen oder zu trainieren. Ich benutze zum Beispiel die Ubuntu Linux-Eingabeaufforderung, navigiere manuell zur entsprechenden Stelle und tippe einen folgenden Befehl wie den folgenden (ich habe es auch im su-Modus versucht)

bash pretrained_models/download_pix2pix_model.sh facades_label2photo

Ich erhalte sofort einen Fehler, der immer derselbe ist, ähnlich dem Folgenden:

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

Irgendeine Idee?

Vincent Thomas
quelle
4
Ich habe keine Ahnung, was Sie tun, aber $'\r': command not founddas Problem ist, dass Sie einen Windows-Texteditor verwendet haben, der Ihre Dateien mit CRLF-Zeilenenden im DOS-Stil gespeichert hat - siehe zum Beispiel DOS vs. Unix-
Zeilenenden
Aber ich gebe den Befehl einfach direkt in die Windows Ubuntu-Eingabeaufforderung ein. Überhaupt nicht an einem Texteditor vorbei ...
Vincent Thomas
1
@VincentThomas Dies ist eine Textdatei:pretrained_models/download_pix2pix_model.sh
wjandrea
Versuchen Sie die Antwort hier: So ändern Sie das Windows-Zeilenende auf die Unix-Version . Wenn es funktioniert, lassen Sie es uns wissen und wir werden Ihre Frage als Duplikat schließen.
wjandrea
@wjandrea Ich glaube nicht, dass dies wirklich ein Duplikat von Wie man das Windows-Zeilenende auf die Unix-Version umstellt . Die vernünftige Lösung ist hier zu laufengit clone innerhalb des WSL-Systems und keine zusätzlichen Anstrengungen zu unternehmen, um jede Datei zu konvertieren. Wenn das Ziel die Installation von Software in Ubuntu ist, gibt es keinen Grund, diese zuerst außerhalb des Dateisystems herunterzuladen.
Eliah Kagan

Antworten:

23

In der WSL:

sudo apt-get install dos2unix

Dann,

dos2unix [file]

Vollständige Dokumentation:

man dos2unix

Ich habe meinen Tag gerettet, hoffe es hilft.

Chaim Eliyah
quelle
Das funktioniert. Ich habe VSCode verwendet und hatte ein Shell-Skript, das einige rsync- und ssh-Befehle ausführt, und bin auf dieses Problem gestoßen. Ich habe dos2unix in der WSL installiert, wie Chaim sagte, und einmal ausgeführt, wsl dos2unix deploy.shvon Powershell, und jetzt funktioniert bei jeder Eingabe wsl ./deploy.shalles perfekt! Vielen Dank.
Dan Zuzevich
7

Steeldriver ist richtig, dass das Problem ist, dass Sie Dateien mit Windows haben Zeilenenden haben und bashdiese nicht ausführen können. $'\r'ist eine Darstellung des Wagenrücklaufzeichens (CR), das Teil der traditionellen DOS- und Windows-Zeilenenden (CR LF) ist, aber in traditionellen Zeilenenden (LF) im Unix-Stil fehlt.

Wie Sie sagen , geben Sie den Befehl ein, um zu versuchen, das Skript auszuführen. Beachten Sie bashjedoch, dass das Skript tatsächlich außerhalb Ihres Ubuntu (WSL) -Systems in Ihrem Windows gespeichert ist Download-Verzeichnis :

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

WSL Pfade , die mit beginnen /mnt/c, wo cjeder Windows - Laufwerksbuchstaben sein können, sind Pfade , die Zugriff auf Dateien und Verzeichnisse außerhalb des Ubuntu - System. Als Windows-Pfad bedeutet das:

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

Dass eine Datei in Ihrem Windows-System gespeichert ist außerhalb des Installationsbereichs von Ubuntu ist, garantiert nicht, dass Windows-Endungen anstelle von Unix-Endungen verwendet werden. Wenn Sie jedoch die Dateien mit Git in Windows heruntergeladen haben , ist die Standardkonfiguration, dass Sie Zeilenenden im Windows-Stil erhalten.

Der einfachste Weg, das Problem zu beheben, besteht darin, einfach die Dateien, die Sie im Ubuntu-System benötigen , von Ihrer bashEingabeaufforderung herunterzuladen . Ich empfehle Ihnen, das Ubuntu-System vollständig zu aktualisieren und dann git in Ubuntu zu installieren. Dort finden build-essentialSie nützliche Tools, die Sie zum Kompilieren der meisten Software aus dem Quellcode benötigen. Für Python-Programme benötigen Sie möglicherweise nichtbuild-essential . Sie können es weglassen, wenn Sie möchten, aber ich vermute, Sie werden es irgendwann brauchen.

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

Wechseln Sie dann mit dem cdBefehl in ein Verzeichnis, in das Sie die Software herunterladen möchten. Dies sollte ein Verzeichnis in Ihrem Ubuntu-System sein. Zum Beispiel könnte es Ihr Ubuntu-Home-Verzeichnis oder irgendwo drinnen sein. Dort klonen Sie das Repository von GitHub. Ich habe es in dem srcVerzeichnis gemacht, das ich in meinem Home-Verzeichnis erstellt habe.

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

Natürlich müssen Sie höchstwahrscheinlich zuerst die Abhängigkeiten installieren. Um das zu tun, folgen Sie einfach die all offiziellen Anweisungen . Führen Sie alle diese Schritte im Ubuntu-System aus.

Eliah Kagan
quelle