Bagaimana cara memperbaiki kesalahan "$ '\ r': command not found" yang menjalankan skrip Bash di WSL?

23

Saya mendapatkan kesalahan di WSL ketika mencoba menggunakan junyanz / pytorch-CycleGAN-and-pix2pix .

Saya mengikuti semua langkah instalasi dengan sukses pada Windows 10 x64 menggunakan langkah-langkah di PyTORCH pada Windows 10: Instruksi dengan screenshot , kemudian Ubuntu untuk Windows dengan desktop GitHub Cara Menginstal dan Menggunakan Linux Bash Shell pada Windows 10 .

Tapi saya diblokir pada langkah terbaru.

Di sinilah saya mencoba mengunduh atau melatih model di Windows. Misalnya menggunakan Ubuntu Linux prompt, saya menavigasi secara manual ke tempat yang tepat dan mengetik perintah berikut seperti di bawah ini (Saya juga mencoba dalam mode su)

bash pretrained_models/download_pix2pix_model.sh facades_label2photo

Saya mendapatkan kesalahan langsung, selalu sama, mirip dengan ini:

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

Ada ide?

Vincent Thomas
sumber
4
Saya tidak tahu apa yang Anda lakukan, tetapi $'\r': command not foundsangat menyarankan masalah adalah bahwa Anda telah menggunakan editor teks Windows yang telah menyimpan file Anda dengan ujung baris CRLF gaya-DOS - lihat misalnya Akhiran DOS vs Unix Line
steeldriver
Tapi saya hanya mengetik perintah langsung di command prompt Window Ubuntu. Tidak lewat editor teks sama sekali ...
Vincent Thomas
1
@VincentThomas Ini adalah file teks:pretrained_models/download_pix2pix_model.sh
wjandrea
Coba jawabannya di sini: Cara mengubah akhiran Windows ke versi Unix . Jika berhasil, beri tahu kami dan kami akan menutup pertanyaan Anda sebagai duplikat.
wjandrea
@wjandrea Saya tidak berpikir ini benar-benar duplikat dari Bagaimana mengubah akhir baris Windows ke versi Unix . Solusi yang masuk akal di sini adalah berjalan git clonedalam sistem WSL , dan tidak melakukan upaya ekstra untuk mengonversi setiap file. Jika tujuannya adalah untuk menginstal perangkat lunak di Ubuntu, tidak ada alasan untuk mengunduhnya di luar sistem file terlebih dahulu.
Eliah Kagan

Jawaban:

23

Di dalam WSL:

sudo apt-get install dos2unix

Kemudian,

dos2unix [file]

Dokumentasi lengkap:

man dos2unix

Selamatkan hari saya, semoga membantu.

Chaim Eliyah
sumber
Ini bekerja. Saya menggunakan VSCode dan memiliki skrip shell yang mengeksekusi beberapa perintah rsync dan ssh, dan mengalami masalah ini. Saya menginstal dos2unix di dalam WSL seperti kata Chaim, dan dieksekusi sekali, wsl dos2unix deploy.shdari Powershell, dan sekarang, setiap kali saya mengetik, wsl ./deploy.shsemuanya bekerja dengan sempurna! Terima kasih banyak.
Dan Zuzevich
7

steeldriver benar bahwa masalahnya adalah Anda memiliki file dengan ujung jalur Windows dan bashtidak dapat menjalankannya. $'\r'adalah representasi dari karakter carriage return (CR) yang merupakan bagian dari ujung jalur DOS dan Windows tradisional (CR LF), tetapi tidak ada pada ujung garis gaya Unix (LF) tradisional.

Seperti yang Anda katakan , Anda mengetik perintah untuk mencoba menjalankan skrip bash, tetapi perhatikan bahwa skrip tersebut sebenarnya disimpan di luar sistem Ubuntu (WSL) Anda, di direktori unduhan Windows Anda :

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

Jalur WSL yang dimulai dengan /mnt/c, di mana cada huruf drive Windows, adalah jalur yang mengakses file dan direktori di luar sistem Ubuntu. Sebagai jalur Windows, yaitu:

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

Bahwa file disimpan di sistem Windows Anda di luar area di mana Ubuntu diinstal tidak menjamin bahwa ia menggunakan gaya Windows alih-alih ujung garis gaya Unix. Namun, jika Anda mengunduh file dengan Git di Windows , konfigurasi defaultnya adalah untuk memberi Anda akhiran gaya Windows.

Cara termudah untuk memperbaiki masalah adalah dengan hanya mengunduh file yang Anda butuhkan di dalam sistem Ubuntu dari bashprompt Anda . Saya sarankan Anda sepenuhnya memperbarui sistem Ubuntu, kemudian menginstal git di Ubuntu, serta build-essentialyang menyediakan alat yang berguna yang Anda perlukan untuk mengkompilasi sebagian besar perangkat lunak dari kode sumber. Untuk program Python, Anda mungkin tidak perlu build-essential; Anda dapat menghilangkannya jika mau, tetapi saya curiga Anda akhirnya akan membutuhkannya di beberapa titik.

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

Kemudian gunakan cdperintah untuk pergi ke direktori tempat Anda ingin mengunduh perangkat lunak. Ini harus menjadi direktori di dalam sistem Ubuntu Anda. Misalnya, itu bisa direktori home Ubuntu Anda atau di suatu tempat di dalam sana. Sesampai di sana, klon repositori dari GitHub. Saya melakukannya di dalam srcdirektori yang saya buat di dalam direktori home saya.

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

Tentu saja, Anda kemungkinan besar harus menginstal dependensi terlebih dahulu. Untuk melakukan itu, cukup ikuti semua instruksi resmi . Lakukan semua langkah itu dalam sistem Ubuntu.

Eliah Kagan
sumber