sudoでシェルワイルドカードを使用する方法


14

私はfolder1のすべてのコンテンツを取り出して、folder1が入っているimages_tempフォルダにドロップしようとしています:

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 2017

ええ、私は何が起こったのかわかっていると思います。これらのフォルダをローカルマシンからroot経由でサーバーにアップロードしましたが、今はユーザー名経由でアクセスできません。
ダニエル

したがって、おそらく詳細情報が必要です。権限の問題である可能性もありますが、権限の問題を軽減するsudoで試してみました。このコマンドからの出力を提供できますか?pwd && ls -l
0xSheepdog

追加情報
ダニエル

1
あなたls -lfolder1存在しないことを示しています。これは、ファイルをコピーしようとして失敗する理由を説明しています。
dhag

回答:


23

sudo mv folder1/* .

あなたのシェル(そうではなく、あなたとして実行しているroot)は、そのfolder1/*グロブを拡張しています(まあ、拡張しようとしています)。

その結果、いくつかの引数が渡されsudo mvます。ただし、ここでは(とは異なりroot)そのディレクトリへの読み取りアクセス権がないため、グロブはどのファイルにも一致しません。シェルは、グロブが一致しない場合bashsh、グロブが一致しない場合にそのまま渡される、壊れた(IMO)シェルの1つです。

そのため、そのパターンに一致するファイルが見つからなかったことを通知するエラーをシェルが返す代わりに、folder1/*文字列を引数として文字列に渡しましたsudo mv。とmv呼ばれるファイルを見つけることができないと不平を言いますfolder1/*(この場合はありがたいことに無害です)。

ここでは、そのグロブをルートで展開したいので、そのグロブを展開するには、ルートとしてシェルを起動する必要があります。

sudo sh -c 'mv folder1/* .'

いい答えだ。shandとは異なり、グロビングに関してシェルが「壊れていない」場合、どのシェルがあるかを知ることは素晴らしいことbashです。
グレゴリー

@gregory、たとえばBourne以前のsh、またはcsh、tcsh(Bourne以前のshのように動作)、またはfishまたはzsh。bashではfailglob、同じような動作をするようにオプションを設定できます。
ステファンChazelas
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.