Come posso correggere gli errori "$ '\ r': comando non trovato" durante l'esecuzione degli script Bash in WSL?


23

Ricevo un errore in WSL mentre provo ad usare junyanz / pytorch-CycleGAN-and-pix2pix .

Ho seguito con successo tutti i passaggi di installazione su Windows 10 x64 usando i passaggi di PyTORCH su Windows 10: un'istruzione con schermate , quindi Ubuntu per Windows con desktop GitHub Come installare e utilizzare Linux Bash Shell su Windows 10 .

Ma sono bloccato negli ultimi passaggi.

È dove sto cercando di scaricare o addestrare il modello in Windows. Usando ad esempio il prompt di Ubuntu Linux, navigo manualmente nella posizione appropriata e digito un comando seguente come quello qui sotto (ho anche provato in modalità su)

bash pretrained_models/download_pix2pix_model.sh facades_label2photo

Ricevo un errore immediato, sempre lo stesso, simile a questi:

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

Qualche idea?


4
Non ho idea di quello che stai facendo, ma $'\r': command not foundsuggerisco fortemente che il problema è che hai utilizzato un editor di testo di Windows che ha salvato i tuoi file con terminazioni di riga CRLF in stile DOS - vedi ad esempio le terminazioni di riga DOS vs Unix
steeldriver

Ma sto solo digitando il comando direttamente nel prompt dei comandi di Windows Ubuntu. Non passare per nessun editor di testo ...
Vincent Thomas,

1
@VincentThomas Questo è un file di testo:pretrained_models/download_pix2pix_model.sh
wjandrea,

Prova qui la risposta: Come cambiare il finale di linea di Windows alla versione Unix . Se funziona, faccelo sapere e chiuderemo la tua domanda come duplicato.
wjandrea,

@wjandrea Non penso che questo sia davvero un duplicato di Come cambiare il finale di linea di Windows alla versione Unix . La soluzione ragionevole qui è eseguire git cloneall'interno del sistema WSL e non intraprendere ulteriori sforzi nel tentativo di convertire ciascun file. Se l'obiettivo è installare software in Ubuntu, non c'è motivo di scaricarlo prima al di fuori del suo filesystem.
Eliah Kagan,

Risposte:


23

All'interno di WSL:

sudo apt-get install dos2unix

Poi,

dos2unix [file]

Documentazione completa:

man dos2unix

Mi hai salvato la giornata, spero che sia d'aiuto.


Questo funziona Stavo usando VSCode e avevo uno script di shell che esegue alcuni comandi rsync e ssh, e ho riscontrato questo problema. Ho installato dos2unix in WSL come ha detto Chaim, ed eseguito una volta, wsl dos2unix deploy.shda Powershell, e ora, ogni volta che scrivo, wsl ./deploy.shtutto funziona perfettamente! Molte grazie.
Dan Zuzevich,

7

steeldriver ha ragione nel dire che il problema è che hai file con terminazioni di linea di Windows e bashnon puoi eseguirli. $'\r'è una rappresentazione del carattere di ritorno a capo (CR) che fa parte delle terminazioni di riga DOS e Windows tradizionali (CR LF), ma è assente nelle terminazioni di linea in stile Unix tradizionale (LF).

Come dici tu , stai digitando il comando per tentare di eseguire lo script bash, ma noti che lo script è effettivamente archiviato al di fuori del tuo sistema Ubuntu (WSL), nella directory di download di Windows :

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

I percorsi WSL che iniziano con /mnt/c, dove cpuò essere una qualsiasi lettera di unità di Windows, sono percorsi che accedono a file e directory all'esterno del sistema Ubuntu. Come percorso di Windows, ovvero:

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

Il fatto che un file sia archiviato nel tuo sistema Windows al di fuori dell'area in cui è installato Ubuntu non garantisce che utilizzi terminazioni di linea in stile Windows anziché in stile Unix. Tuttavia, se hai scaricato i file con Git in Windows , la sua configurazione predefinita è quella di fornirti terminazioni di linea in stile Windows.

Il modo più semplice per risolvere il problema è semplicemente scaricare i file necessari all'interno del sistema Ubuntu dal bashprompt. Ti consiglio di aggiornare completamente il sistema Ubuntu, quindi installarlo git in Ubuntu, oltre a build-essentialfornire strumenti utili di cui hai bisogno per compilare la maggior parte del software dal codice sorgente. Per i programmi Python, potrebbe non essere necessario build-essential; puoi ometterlo se vuoi, ma sospetto che finirai per averne bisogno ad un certo punto.

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

Quindi utilizzare il cdcomando per accedere a una directory in cui si desidera scaricare il software. Questa dovrebbe essere una directory all'interno del tuo sistema Ubuntu. Ad esempio, potrebbe essere la tua home directory di Ubuntu o da qualche parte al suo interno. Una volta lì, clonare il repository da GitHub. L'ho fatto nella srcdirectory che ho creato nella mia home directory.

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

Naturalmente, molto probabilmente dovrai prima installare le dipendenze. Per farlo, basta seguire tutte le istruzioni ufficiali . Fai tutti questi passaggi all'interno del sistema Ubuntu.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.