ワイルドカードを使用したこのsudo mv操作が機能しないのはなぜですか?


8

これには簡単な答えがあるに違いないと思いますが、なぜこれが機能しないのかわかりません!

私のホームディレクトリには、installed-pluginsというフォルダーがあります(数レベル下にあります)。そのフォルダーのすべてのコンテンツ(約15の.jarファイル)を、別のフォルダー(インストール済みプラグインとも呼ばれます)に転送したいと思います。

これは私が試していることです:

$ sudo mv /home/jira-plugins/installed-plugins/* /var/atlassian/application-data/jira/plugins/installed-plugins/                                                                                                                             
mv: cannot stat `/home/jira-plugins/installed-plugins/*': No such file or directory

私のエラーは何ですか?

フォルダーは空ではありません。ここでls出力は:

$ sudo ls /home/jira-plugins/installed-plugins
analytics-client-3.15.jar                                  plugin.2223138796603023855.jira-importers-plugin-6.0.30.jar
atlassian-chaperone-2.0.3.jar                              plugin.330169947367430109.jira-fisheye-plugin-6.2.8.jar
atlassian-client-resource-1.0.jar                          plugin.4363048306537053933.jeditor-2.1.7.2.jar
atlassian-pocketknife-api-commons-plugin-0.19.jar          plugin.4438307615842123002.jira-ical-feed-1.0.4.jar
atlassian-pretty-urls-plugin-1.8.jar                       plugin.461510159947098121.jira-issue-collector-plugin-1.2.5.jar
base-hipchat-integration-plugin-7.8.24.jar                 plugin.5630909028354276764.atlassian-universal-plugin-manager-plugin-2.7.8.jar
base-hipchat-integration-plugin-api-7.8.24.jar             plugin.6920509095052318016.atlassian-bonfire-plugin-2.9.13.jar
hipchat-core-plugin-0.8.3.jar                              plugin.6952408596192442765.atlassian-bonfire-plugin-2.8.2.jar
hipchat-for-jira-plugin-1.2.11.jar                         plugin.7079751365359230322.jira-importers-bitbucket-plugin-1.0.8.jar
jira-email-processor-plugin-1.0.29.jar                     plugin.7451827330686083284.atlassian-universal-plugin-manager-plugin-2.21.4.jar
jira-fisheye-plugin-7.1.1.jar                              plugin.7498175247667964103.jira-importers-redmine-plugin-2.0.7.jar
jira-ical-feed-1.1.jar                                     plugin.7803627457720701011.jira-importers-plugin-3.5.3.jar
jira-issue-nav-components-6.2.23.jar                       plugin.7977988994984147602.jira-bamboo-plugin-5.1.6.jar
jira-servicedesk-2.3.6.jar                                 plugin.8372419067824134899.jira-importers-plugin-5.0.2.jar
jira-workinghours-plugin-1.5.5.jar                         plugin.9081077311844509190.jira-fisheye-plugin-5.0.13.jar
plugin.1260160651631713368.stp-3.0.11.jar                  plugin.9128973321151732551.jira-fisheye-plugin-6.3.10.jar
plugin.2076016305412409108.jira-fisheye-plugin-3.4.10.jar  plugin-license-storage-plugin-2.8.jar
plugin.218965759549051904.jira-importers-plugin-6.1.5.jar  querydsl-4.0.7-provider-plugin-1.1.jar
plugin.2211202876682184330.jira-ical-feed-1.0.12.jar       stp-3.5.10.jar

2
jira-pluginsフォルダーは/home/にありますか、それとも次の場所にあります/home/USER/か?
clk

実際にそこにファイルはありますか?グロビングをオフにしましたか?
ジェフシャラー

ファイルは間違いなくそこにあります
esther h

2
質問を編集して、の出力を投稿してくださいls /home/jira-plugins/installed-plugins/
terdon

1
terdonの情報要求にはまだ応答していません。そうしてください。
マイケルハンプトン

回答:


17

通常のユーザーアカウントではディレクトリにアクセスできないため、シェルはワイルドカードに一致するファイルを列挙できないため、これはほぼ確実です。

これは次のようなコマンドで簡単に確認できます

ls /home/jira-plugins/installed-plugins

権限が拒否された場合、シェルが*そのディレクトリでワイルドカードを展開することはできません。

どうして?あなたのコマンドを検討してください

sudo mv / home / jira-plugins / installed-plugins / * / var / atlassian / application-data / jira / plugins / installed-plugins /

処理の順序は、(1)ワイルドカードを展開する、(2)コマンドを実行する、この場合sudo、たまたまmvステートメントに対応する引数がいくつかある場合です。

2つの方法のいずれかで問題を解決できます

  1. ルートになり、ファイルを移動します

    sudo -s
    mv /home/jira-plugins/installed-plugins/* /var/atlassian/application-data/jira/plugins/installed-plugins/                    
    
  2. 実行後にワイルドカードを展開する sudo

    sudo bash -c "mv /home/jira-plugins/installed-plugins/* /var/atlassian/application-data/jira/plugins/installed-plugins/"

パーフェクト、コマンドの処理順序を説明するための+1。
ゼナ

10

sudo lsフォルダーをリストするときと同じように、パス内の1つまたは複数のディレクトリが通常のユーザーに読み取れないと想定しています。それは行動を説明するでしょう。ここでの主な誤解は、のグロブ拡張がいつ*行われるかです。これは、コマンドを呼び出す前に、シェルによって行われます。シェルに十分な権限がない場合、シェルは展開できません。

この場合の詳細は次のとおりです。

  1. シェルはコマンドラインを展開しようとします。あなたには/home/jira-plugins/installed-plugins自分自身として読む権利がないため、グロブパターンを展開することはできません/home/jira-plugins/installed-plugins/*。変更されません。この段階の後、*もはや特別ではありません。
  2. あなたのシェルはコマンドを呼び出すsudo引数を使ってmv /home/jira-plugins/installed-plugins/*、そして/var/atlassian/application-data/jira/plugins/installed-plugins/
  3. sudomv引数を指定して呼び出し/home/jira-plugins/installed-plugins/*/var/atlassian/application-data/jira/plugins/installed-plugins/
  4. mvは実際にという名前のファイルを移動しようとしますが/home/jira-plugins/installed-plugins/*、存在しないため、エラーメッセージが表示されます。

ありがとう、完全に理にかなっています。他の回答が最初に来たのでそれを受け入れ、それについて何をすべきかを正確に教えてくれました。
h
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.