¿Cómo usar comodines de shell con sudo?

14

Estoy tratando de sacar todo el contenido de la carpeta1 y colocarlo en la carpeta images_temp en la que se encuentra la carpeta1:

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

Sin embargo, recibo el error anterior, traté de buscar la respuesta aquí, pero hay respuestas que no creo que se apliquen a mi situación. Por favor ayuda.

[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

Además, recibí este error:

[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
fuente
2
¿Estás seguro de que hay archivos dentro folder1?
SYN
sí, así que creo que sé lo que pasó, cargué estas carpetas desde la máquina local al servidor a través de la raíz y ahora no me da acceso a través del nombre de usuario.
Daniel
entonces probablemente necesitemos más información. bien podría ser el problema de los permisos, pero lo intentó con sudo, que debería mitigar los problemas de permisos. ¿Puede proporcionar la salida de este comando? Por favor:pwd && ls -l
0xSheepdog
agregó más información
Daniel
1
Su ls -lindica que folder1no existe. Eso explicaría por qué falla al intentar copiar archivos de él.
dhag

Respuestas:

23

En

sudo mv folder1/* .

Su caparazón (tan corriendo como usted , no root) está expandiendo (bueno, tratando de expandir) ese folder1/*globo.

Eso da como resultado una serie de argumentos para pasar sudo mv. Sin embargo, aquí (al contrario de root) no tiene acceso de lectura a ese directorio, por lo que el globo no coincide con ningún archivo. Su caparazón es uno de esos caparazones rotos (IMO) como basho shcuando un globo no coincide, se pasa como está.

Entonces, en lugar de que el shell devuelva un error para decirle que no encontró ningún archivo que coincida con ese patrón, pasó la folder1/*cadena literalmente como un argumento para sudo mv. Y se mvqueja de que no puede encontrar un archivo llamado folder1/*(afortunadamente inofensivo en este caso).

Aquí, desearía que ese globo se expandiera por raíz, por lo que necesitaría iniciar un shell como raíz para expandir ese globo:

sudo sh -c 'mv folder1/* .'
Stéphane Chazelas
fuente
buena respuesta. Sería genial saber cuáles, si las hay, las conchas no están "rotas" con respecto al engorde, a diferencia de shy bash.
gregory
@gregory, el pre-Bourne sh por ejemplo, o csh, tcsh (que se comporta como el pre-Bourne sh), o fish o zsh. En bash, puede configurar la failglobopción para obtener un comportamiento similar.
Stéphane Chazelas