Как использовать групповые символы с sudo?

14

Я пытаюсь вынуть все содержимое folder1 и поместить его в папку images_temp, в которой находится folder1:

jeatonhomes@jeatonhomes.com [~/images_temp]# sudo mv folder1/* .
mv: cannot stat `folder1/*': No such file or directory

Тем не менее, я получаю эту ошибку выше, я попытался найти ответ здесь, но есть ответы, которые я не считаю применимыми к моей ситуации. Пожалуйста помоги.

jeatonhomes@jeatonhomes.com [~]# pwd && ls -l
/home/jeatonhomes
total 108
drwx--x--x  18 jeatonhomes jeatonhomes 4096 Apr  3 13:25 ./
drwx--x--x 106 root        root        4096 Mar 30 16:19 ../
lrwxrwxrwx   1 jeatonhomes jeatonhomes   37 Dec 18  2015 access-logs -> /usr/local/apache/domlogs/jeatonhomes/
-rw-------   1 jeatonhomes jeatonhomes  628 Apr  3 13:25 .bash_history
-rw-r--r--   1 jeatonhomes jeatonhomes   18 Sep 22  2015 .bash_logout
-rw-r--r--   1 jeatonhomes jeatonhomes  176 Sep 22  2015 .bash_profile
-rw-r--r--   1 jeatonhomes jeatonhomes  124 Sep 22  2015 .bashrc
drwxr-xr-x   2 jeatonhomes jeatonhomes 4096 Aug  4  2016 cache/
-rw-r-----   1 jeatonhomes jeatonhomes   20 Jan  4 14:10 .contactemail
drwx------   5 jeatonhomes jeatonhomes 4096 Mar 20 22:39 .cpanel/
drwx------   4 jeatonhomes jeatonhomes 4096 Aug  4  2016 .cphorde/
-rw-rw-r--   1 jeatonhomes jeatonhomes   15 Apr  3 13:26 .dns
drwxr-x---   2 jeatonhomes mail        4096 Jul 22  2016 etc/
-rw-------   1 jeatonhomes jeatonhomes   17 Mar  8 22:39 .ftpquota
drwxr-x---   2 jeatonhomes nobody      4096 Dec 18  2015 .htpasswds/
drwxr-xr-x   2 root        root        4096 Apr  3 13:45 images_temp/
-rw-------   1 jeatonhomes jeatonhomes  211 Jan  4 14:09 .lastlogin
drwx------   2 jeatonhomes jeatonhomes 4096 Apr  1 08:16 logs/
drwxr-x--x   8 jeatonhomes jeatonhomes 4096 Dec 18  2015 mail/
drwxrwxr-x   4 jeatonhomes jeatonhomes 4096 Jan  4 14:27 perl5/
drwxr-x---   3 jeatonhomes jeatonhomes 4096 Dec 18  2015 public_ftp/
drwxr-x---   7 jeatonhomes nobody      4096 Apr  3 06:06 public_html/
drwx------   2 jeatonhomes jeatonhomes 4096 Jan  4 14:10 .ssh/
drwxr-xr-x   5 jeatonhomes jeatonhomes 4096 Feb 15 06:34 ssl/
drwx------   2 jeatonhomes jeatonhomes 4096 Nov  3 22:55 .subaccounts/
drwxr-xr-x   7 jeatonhomes jeatonhomes 4096 Jul  6  2016 tmp/
drwx------   2 jeatonhomes jeatonhomes 4096 Dec 18  2015 .trash/
lrwxrwxrwx   1 jeatonhomes jeatonhomes   11 Dec 18  2015 www -> public_html/
-rw-r--r--   1 jeatonhomes jeatonhomes  658 Nov 10  2015 .zshrc

Также я получил эту ошибку:

jeatonhomes@jeatonhomes.com [~/public_html]# wp media import 
/home/jeatonhomes/images_temp/* --title="Images for East 46th West 59th and Sycamore Road" --alt="New Images  for April"
Warning: copy(/home/jeatonhomes/images_temp/62262529_0.jpg): failed to open stream: Permission denied in phar:///usr/local/bin/wp/php/commands/media.php on line 292
Error: Could not create temporary file for /home/jeatonhomes/images_temp/62262529_0.jpg.
jeatonhomes@jeatonhomes.com [~/public_html]# sudo wp media import /home/jeatonhomes/images_temp/* --title="Images for East 46th West 59th and Sycamore Road" --alt="New Images  for April"
[sudo] password for jeatonhomes:
sudo: wp: command not found
Даниил
источник
2
Вы уверены, что внутри есть файлы folder1?
SYN
да, так что я думаю, что знаю, что случилось, я загрузил эти папки с локального компьютера на сервер через root, и теперь он не дает мне доступ через имя пользователя.
Даниэль
поэтому нам, вероятно, нужно больше информации. это может быть проблема с разрешениями, но вы попытались решить проблему с помощью sudo, что должно уменьшить проблемы с разрешениями. Можете ли вы предоставить вывод этой команды, пожалуйста:pwd && ls -l
0xSheepdog
добавил больше информации
Даниил
1
Ваш ls -lуказывает, что folder1не существует. Это объясняет, почему попытка скопировать файлы с него не удалась.
дхаг

Ответы:

23

В

sudo mv folder1/* .

Ваша оболочка (так работает, как вы , а не root) расширяет (ну, пытаясь расширить) этот folder1/*шар.

Это приводит к ряду аргументов для передачи sudo mv. Однако здесь у вас (в отличие от root) нет доступа на чтение к этому каталогу, поэтому глобус не соответствует ни одному файлу. Ваша оболочка является одной из тех сломанных (IMO) оболочек, как bashили shгде, когда глобус не совпадает, он передается как есть.

Таким образом, вместо того, чтобы оболочка вернула ошибку, сообщив вам, что не нашла ни одного файла, соответствующего этому шаблону, она передала folder1/*строку буквально в качестве аргумента sudo mv. И mvжалуется, что не может найти файл с именем folder1/*(к счастью, безвреден в этом случае).

Здесь вы бы хотели, чтобы этот глобус расширялся root, поэтому вам нужно запустить оболочку как root для расширения этого глоба:

sudo sh -c 'mv folder1/* .'
Стефан Шазелас
источник
хороший ответ. Было бы здорово узнать, какие, если таковые имеются, снаряды не «сломаны» по отношению к шатанию, в отличие от shи bash.
Грегори
@gregory, например, pre-Bourne sh, или csh, tcsh (которые ведут себя как pre-Bourne sh) или fish или zsh. В bash вы можете установить failglobопцию, чтобы получить подобное поведение.
Стефан