Comment utiliser les caractères génériques shell avec sudo?

14

J'essaie de retirer tout le contenu de folder1 et de le déposer dans le dossier images_temp dans lequel folder1 se trouve:

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

Pourtant, je reçois cette erreur ci-dessus, j'ai essayé de rechercher la réponse ici, mais il y a des réponses que je ne crois pas applicables à ma situation. Veuillez aider.

[email protected] [~]# 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

De plus, j'ai eu cette erreur:

[email protected] [~/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.
[email protected] [~/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
Daniel
la source
2
Êtes-vous certain qu'il y a des fichiers à l'intérieur folder1?
SYN
oui, donc je pense que je sais ce qui s'est passé, j'ai téléchargé ces dossiers de la machine locale au serveur via root et il ne me donne pas accès via nom d'utilisateur maintenant.
Daniel
nous avons donc probablement besoin de plus d'informations. cela pourrait bien être le problème des autorisations, mais vous l'avez essayé avec sudo qui devrait atténuer les problèmes d'autorisations. Pouvez-vous fournir la sortie de cette commande, veuillez:pwd && ls -l
0xSheepdog
ajouté plus d'infos
Daniel
1
Votre ls -lindique que cela folder1n'existe pas. Cela expliquerait pourquoi la tentative de copie de fichiers à partir de celui-ci échoue.
dhag

Réponses:

23

Dans

sudo mv folder1/* .

Votre shell (si courant que vous , pas root) est en train d'étendre (enfin, d'essayer de l'étendre) ce folder1/*glob.

Cela se traduit par un certain nombre d'arguments à transmettre sudo mv. Cependant, ici (contrairement à root) vous n'avez pas accès en lecture à ce répertoire, donc le glob ne correspond à aucun fichier. Votre shell est l'un de ces shells cassés (IMO) comme bashou shlorsque lorsqu'un glob ne correspond pas, il est transmis tel quel.

Ainsi, au lieu que le shell retourne une erreur pour vous dire qu'il n'a trouvé aucun fichier correspondant à ce modèle, il a folder1/*littéralement passé la chaîne en argument sudo mv. Et se mvplaint de ne pas trouver un fichier appelé folder1/*(heureusement inoffensif dans ce cas).

Ici, vous souhaitez que ce glob soit développé par root, vous devez donc démarrer un shell en tant que root pour développer ce glob:

sudo sh -c 'mv folder1/* .'
Stéphane Chazelas
la source
Bonne réponse. Ce serait formidable de savoir lesquels, le cas échéant, les obus ne sont pas "cassés" en ce qui concerne le globbing, contrairement à shet bash.
Gregory
@gregory, le pré-Bourne sh par exemple, ou csh, tcsh (qui se comportent comme pré-Bourne sh), ou fish ou zsh. En bash, vous pouvez définir l' failgloboption pour obtenir un comportement similaire.
Stéphane Chazelas