Come usare i caratteri jolly della shell con sudo?


14

Sto cercando di estrarre tutto il contenuto della cartella1 e rilasciarlo nella cartella images_temp in cui si trova la cartella1:

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

Eppure ricevo questo errore sopra, ho cercato di cercare la risposta qui, ma ci sono risposte che non credo si applichino alla mia situazione. Per favore aiuto.

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

Inoltre, ho ricevuto questo errore:

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
Sei sicuro che ci siano file all'interno folder1?
SYN,

sì, quindi penso di sapere cosa è successo, ho caricato queste cartelle dalla macchina locale al server tramite root e ora non mi dà accesso tramite nome utente.
Daniel,

quindi probabilmente abbiamo bisogno di maggiori informazioni. potrebbe essere il problema dei permessi, ma l'hai provato con sudo che dovrebbe mitigare i problemi con i permessi. Puoi fornire l'output di questo comando, per favore:pwd && ls -l
0xSheepdog

aggiunto ulteriori informazioni
Daniel

1
Il tuo ls -lindica che folder1non esiste. Ciò spiegherebbe perché il tentativo di copiare file da esso non riesce.
dhag,

Risposte:


23

In

sudo mv folder1/* .

La tua shell (così funzionante come te , non root) si sta espandendo (bene, cercando di espandere) quel folder1/*glob.

Ciò si traduce in una serie di argomenti a cui passare sudo mv. Comunque qui, tu (contrariamente a root) non hai accesso in lettura a quella directory, quindi il glob non riesce a trovare nessun file. La tua shell è una di quelle shell rotte (IMO) come basho shdove quando un glob non corrisponde, viene passato così com'è.

Quindi, invece della shell che restituisce un errore per dirti che non ha trovato alcun file corrispondente a quel modello, ha passato folder1/*letteralmente la stringa come argomento a sudo mv. E si mvlamenta che non riesce a trovare un file chiamato folder1/*(per fortuna innocuo in questo caso).

Qui, vorresti che quel glob fosse espanso per root, quindi avresti bisogno di avviare una shell come root per espandere quel glob:

sudo sh -c 'mv folder1/* .'

bella risposta. Sarebbe bello sapere quali, se del caso, le conchiglie non sono "rotte" per quanto riguarda il globbing, a differenza di she bash.
Gregory,

@gregory, il pre-Bourne sh per esempio, o csh, tcsh (che si comportano come pre-Bourne sh), o fish o zsh. In bash, puoi impostare l' failglobopzione per ottenere un comportamento simile.
Stéphane Chazelas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.