Як виправити помилки "$ '\ r': команда не знайдена" під час керування сценаріями Bash у WSL?


23

Я отримую помилку в WSL під час спроби використовувати junyanz / pytorch-CycleGAN-and-pix2pix .

Я успішно дотримувався всіх етапів установки в Windows 10 x64, використовуючи кроки в PyTORCH в Windows 10: Інструкція зі знімками екрана , потім Ubuntu для Windows з робочим столом GitHub Як встановити та використовувати Linux Bash Shell в Windows 10 .

Але я заблокований на останніх кроках.

Тут я намагаюся завантажити або тренувати модель в Windows. Використовуючи, наприклад, рядок Ubuntu Linux, я переходжу вручну до відповідного місця та набираю таку команду, як наведена нижче (я також спробував у режимі su)

bash pretrained_models/download_pix2pix_model.sh facades_label2photo

Я отримую негайну помилку, завжди таку ж, схожу на ці:

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

Будь-яка ідея?


4
Я не маю поняття, чим ви займаєтесь, але $'\r': command not foundнастійно напрошується на тому, що ви використовували текстовий редактор Windows, який зберігав ваші файли із закінченнями рядків CRLF у стилі DOS - див. Наприклад DOS vs. Unix Line Endings
steeldriver

Але я просто набрав команду безпосередньо у командному рядку Window Ubuntu. Не проходячи повз жодного текстового редактора ...
Вінсент Томас

1
@VincentThomas Це текстовий файл:pretrained_models/download_pix2pix_model.sh
wjandrea

Спробуйте відповідь тут: Як змінити рядок Windows на версію Unix . Якщо це працює, повідомте нас, і ми закриємо ваше запитання як дублікат.
wjandrea

@wjandrea Я не думаю, що це насправді дублікат Як змінити рядок Windows на версію Unix . Розумне рішення тут - запускатись git cloneу системі WSL , а не докладати додаткових зусиль, намагаючись перетворити кожен файл. Якщо мета - встановити програмне забезпечення в Ubuntu, спочатку не потрібно завантажувати його за межі своєї файлової системи.
Елія Каган

Відповіді:


23

Всередині WSL:

sudo apt-get install dos2unix

Потім,

dos2unix [file]

Повна документація:

man dos2unix

Врятував мій день, сподіваюся, що це допоможе.


Це працює. Я використовував VSCode і мав сценарій оболонки, який виконує якусь команду rsync та ssh, і наткнувся на цю проблему. Я встановив dos2unix всередині WSL, як сказав Хаїм, і виконував один раз wsl dos2unix deploy.shз Powershell, і тепер, кожного разу, коли я набираю , wsl ./deploy.shвсе працює чудово! Дуже дякую.
Дан Зузевич

7

steeldriver вірно, що проблема полягає в тому, що у вас є файли із закінченнями рядків Windows і bashви не можете їх запустити. $'\r'являє собою зображення символу повернення каретки (CR), який є частиною традиційних закінчень ліній DOS та Windows (CR LF), але відсутній у традиційних закінченнях ліній у стилі Unix (LF).

Як ви говорите , ви вводите команду для спроби запуску сценарію bash, але зауважте, що сценарій насправді зберігається поза вашою системою Ubuntu (WSL) у вашому каталозі завантажень Windows :

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

Шляхи до WSL, які починаються /mnt/c, де cможе бути будь-який лист диска Windows, - це шляхи, що мають доступ до файлів і каталогів поза системою Ubuntu. Як шлях до Windows, тобто:

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

Те, що файл зберігається у вашій системі Windows за межами області, де встановлено Ubuntu, не гарантує, що він використовує стиль Windows замість закінчень у стилі Unix. Однак якщо ви завантажили файли за допомогою Git в Windows , її конфігурація за замовчуванням полягає у наданні вам закінчень рядків у стилі Windows.

Найпростіший спосіб виправити проблему - це просто завантажити потрібні файли всередині системи Ubuntu зі свого bashзапиту. Я рекомендую повністю оновити систему Ubuntu, а потім встановити git в Ubuntu, а також, build-essentialякий надає корисні інструменти, необхідні для складання більшості програмного забезпечення з вихідного коду. Для програм Python вам може не знадобитися build-essential; Ви можете опустити його, якщо вам подобається, але я підозрюю, що в якийсь момент вам знадобиться.

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

Потім за допомогою cdкоманди перейдіть до каталогу, куди ви хочете завантажити програмне забезпечення. Це має бути каталог у вашій системі Ubuntu. Наприклад, це може бути ваш домашній каталог Ubuntu або десь там. Потрапивши там, клонуйте сховище з GitHub. Я робив це всередині srcкаталогу, який я робив всередині свого домашнього каталогу.

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

Звичайно, вам, швидше за все, доведеться спочатку встановити залежності. Для цього достатньо дотримуватися всіх офіційних інструкцій . Виконайте всі ці дії в системі Ubuntu.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.