Назад | Перейти на главную страницу

Командная строка Ubuntu, не распознающая общие команды и ошибки разрешений

Я столкнулся с очень странной проблемой, просто не могу понять ее.

Я переношу свой веб-сайт с общего хостинга на самоуправляемый VPS на AWS LightSail. Я забил весь public_html каталог на исходном сайте (виртуального хостинга) и отправил его на мой целевой VPS. Целевой VPS работает под управлением Ubuntu 18.04.

На конце VPS разархивировал архив (tar xvf website.tar.gz) в корневом каталоге веб-сайта, и он там был распакован, как и ожидалось, в public_html подкаталог внутри <website_root> каталог.

Но потом, когда я пытаюсь переместить содержимое <website_root>/public_html каталог в <website_root>/ каталог, это дает мне permission denied ошибка. Но когда я пытаюсь sudo и ввожу его так:

$ sudo cd public_html/

он говорит:

cd: команда не найдена.

Я даже попытался переместить содержимое каталога public_html в корневую папку вот так:

$ sudo mv public_html/* .

и ошибка, которую он дает мне:

mv: невозможно stat 'public_html / *': нет такого файла или каталога.

На грани своего ума я просто не могу понять, где я ошибаюсь.

Вы не можете использовать sudo cd для входа в каталог, к которому у вас нет доступа. cd - это встроенная оболочка, а не исполняемый двоичный файл.

Если у вас нет доступа к каталогу, вы также не можете перечислить файлы в нем, поэтому вы получаете No such file or directory. с участием mv public_html/*.

Станьте root и после этого переместите файлы.

sudo -i
cd public_html
mv * /to/target/dir/
logout

В качестве альтернативы вы можете изменить разрешения этого каталога, чтобы вы могли его читать (chmod a+r public_html, не забудьте вернуть это значение, когда оно вам больше не понадобится) или используйте вывод sudo ls:

sudo ls public_html |xargs -I "{}" sudo mv {} /to/target/dir/

Если у вас большое количество файлов или файлов с пробелами, все становится сложнее.