Mengapa operasi sudo mv ini dengan wildcard tidak berfungsi?

8

Saya pikir pasti ada jawaban sederhana untuk ini, tetapi saya tidak tahu mengapa ini tidak berhasil!

Saya memiliki folder di direktori home saya (well, beberapa level di bawah) yang disebut plugins-terinstal. Saya ingin mentransfer semua isi folder itu (sekitar 15 file .jar) ke folder yang berbeda, juga disebut plugin yang diinstal.

Inilah yang saya coba:

$ 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

Apa kesalahan saya?

Folder ini pasti tidak kosong. Berikut lshasilnya:

$ 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
esther h
sumber
2
Adalah Jira-plugin folder di /home/, atau itu di: /home/USER/?
CLK
Apakah sebenarnya ada file di sana? Apakah Anda mematikan globbing?
Jeff Schaller
file-file itu pasti ada
esther h
2
Harap edit pertanyaan Anda dan kirim hasilnya ls /home/jira-plugins/installed-plugins/.
terdon
1
Anda masih belum menanggapi permintaan informasi terdon. Tolong lakukan itu.
Michael Hampton

Jawaban:

17

Ini hampir pasti karena fakta bahwa akun pengguna biasa Anda tidak dapat mengakses direktori, sehingga shell tidak dapat menghitung file yang cocok dengan wildcard.

Anda dapat mengkonfirmasi ini dengan cukup mudah dengan perintah seperti ini

ls /home/jira-plugins/installed-plugins

Jika Anda mendapatkan izin ditolak maka tidak ada cara shell akan dapat memperluas *wildcard di direktori itu.

Mengapa? Pertimbangkan perintahmu

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

Urutan pemrosesan adalah (1) memperluas wildcard, (2) menjalankan perintah, yang dalam hal ini adalah sudodengan beberapa argumen yang terjadi sesuai dengan mvpernyataan.

Anda dapat memecahkan masalah dengan salah satu dari dua cara

  1. Menjadi root dan kemudian memindahkan file

    sudo -s
    mv /home/jira-plugins/installed-plugins/* /var/atlassian/application-data/jira/plugins/installed-plugins/                    
  2. Luaskan wildcard setelah dijalankan sudo

    sudo bash -c "mv /home/jira-plugins/installed-plugins/* /var/atlassian/application-data/jira/plugins/installed-plugins/"
roaima
sumber
Sempurna, +1 untuk menjelaskan urutan pemrosesan perintah.
Theyna
10

Seperti yang Anda lakukan sudo lsuntuk membuat daftar folder, saya menganggap satu atau lebih direktori di jalur tidak dapat dibaca oleh pengguna biasa. Itu akan menjelaskan perilakunya. Kesalahpahaman kunci di sini adalah ketika ekspansi global *dilakukan. Hal ini dilakukan oleh shell, sebelum menjalankan perintah. Jika shell tidak memiliki izin yang cukup, shell tidak dapat memperluasnya.

Apa yang terjadi dalam kasus ini secara lebih rinci adalah:

  1. Shell Anda mencoba memperluas baris perintah. Karena Anda tidak memiliki hak untuk membaca /home/jira-plugins/installed-pluginsseperti diri Anda sendiri, itu tidak akan dapat memperluas pola gumpalan /home/jira-plugins/installed-plugins/*. Ini akan membiarkannya tidak dimodifikasi. Setelah tahap ini, *tidak lagi istimewa.
  2. Shell Anda memanggil perintah sudodengan argumen mv /home/jira-plugins/installed-plugins/*, dan/var/atlassian/application-data/jira/plugins/installed-plugins/
  3. sudomeminta mvargumen /home/jira-plugins/installed-plugins/*, dan/var/atlassian/application-data/jira/plugins/installed-plugins/
  4. mvmencoba untuk memindahkan file yang sebenarnya bernama /home/jira-plugins/installed-plugins/*, tetapi tidak ada dan dengan demikian pesan kesalahan.
Göran Uddeborg
sumber
terima kasih, sangat masuk akal. Saya menerima jawaban yang lain karena itu yang lebih dulu, dan juga memberi tahu saya apa yang harus saya lakukan.
esther h