Como usar curingas shell com o sudo?

14

Estou tentando retirar todo o conteúdo da pasta1 e soltá-lo na pasta images_temp em que a pasta1 está:

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

No entanto, estou recebendo esse erro acima, tentei procurar a resposta aqui, mas há respostas que não acredito que se apliquem à minha situação. Por favor ajude.

[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

Além disso, recebi este erro:

[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
fonte
2
Você tem certeza de que há arquivos dentro folder1?
SYN
Sim, acho que sei o que aconteceu. Carreguei essas pastas da máquina local no servidor via root e ela não está me dando acesso via nome de usuário agora.
Daniel
então provavelmente precisamos de mais informações. poderia muito bem ser o problema de permissões, mas você tentou com o sudo, o que deve atenuar os problemas de permissões. Você pode fornecer a saída deste comando, por favor:pwd && ls -l
0xSheepdog 3/17/17
adicionado mais informações
Daniel
1
Seu ls -lindica que folder1não existe. Isso explicaria por que a tentativa de copiar arquivos dele falha.
dhag

Respostas:

23

No

sudo mv folder1/* .

Seu shell (tão funcionando como você , não root) está expandindo (bem, tentando expandir) essa folder1/*esfera.

Isso resulta em vários argumentos a serem passados sudo mv. No entanto, aqui, você (ao contrário de root) não tem acesso de leitura a esse diretório; portanto, o glob falha em corresponder a qualquer arquivo. Seu shell é uma daquelas conchas quebradas (IMO), como bashou shonde, quando um globo não corresponde, é passado como está.

Portanto, em vez de o shell retornar um erro para informar que não encontrou nenhum arquivo correspondente a esse padrão, passou a folder1/*string literalmente como argumento sudo mv. E mvreclama que não consegue encontrar um arquivo chamado folder1/*(felizmente inofensivo neste caso).

Aqui, você deseja que a glob seja expandida pela raiz, portanto, você precisa iniciar um shell como raiz para expandir a glob:

sudo sh -c 'mv folder1/* .'
Stéphane Chazelas
fonte
boa resposta. Seria ótimo saber quais conchas, se houver, não estão "quebradas" no que diz respeito a globbing, ao contrário de she bash.
quer
@gregory, o pré-Bourne sh, por exemplo, ou csh, tcsh (que se comporta como o pré-Bourne sh), ou fish ou zsh. No bash, você pode definir a failglobopção para obter um comportamento semelhante.
Stéphane Chazelas 29/11/19