Почему не работает эта команда sudo mv с шаблоном?

Я все еще новичок в Linux, и я думаю, что на это должен быть простой ответ, но я не могу понять, почему это не работает!

У меня есть папка в моем домашнем каталоге (ну, несколько уровней вниз), называемый установленными плагинами. Я хочу передать все содержимое этой папки (около 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 Solutions collect form web for “Почему не работает эта команда sudo mv с шаблоном?”

Это почти наверняка связано с тем, что ваша обычная учетная запись пользователя не может получить доступ к каталогу, поэтому оболочка не может перечислить файлы, которые будут соответствовать шаблону.

Вы можете легко это подтвердить с помощью такой команды

 ls /home/jira-plugins/installed-plugins 

Если вы получите отказ в доступе, то оболочка не сможет расширять подстановочный знак * в этом каталоге.

Зачем? Рассмотрите свою команду

sudo mv / home / jira-plugins / Установленные плагины / * / var / atlassian / application-data / jira / plugins / установленные плагины /

Порядок обработки: (1) расширяет подстановочные знаки, (2) выполняет команду, которая в этом случае является sudo с некоторыми аргументами, которые соответствуют mv .

Вы можете решить проблему одним из двух способов

  1. Станьте root, а затем переместите файлы

     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/" 

Как вы делаете sudo ls чтобы перечислить папку, я предполагаю, что один или несколько каталогов в пути не читаются обычными пользователями. Это объясняет поведение. Ключевое недоразумение здесь заключается в том, когда сделано расширение glob * . Это делается оболочкой перед вызовом любой команды. Если оболочка не имеет достаточных разрешений, она не может ее расширять.

Что происходит в этом случае более подробно:

  1. Ваша оболочка пытается расширить командную строку. Поскольку вы не имеете права читать /home/jira-plugins/installed-plugins как самостоятельно, он не сможет расширить шаблон glob /home/jira-plugins/installed-plugins/* . Это оставит его неизменным. После этого этапа * больше не является особенным.
  2. Ваша оболочка вызывает команду sudo с аргументами mv /home/jira-plugins/installed-plugins/* и /var/atlassian/application-data/jira/plugins/installed-plugins/
  3. sudo вызывает mv с аргументами /home/jira-plugins/installed-plugins/* и /var/atlassian/application-data/jira/plugins/installed-plugins/
  4. mv пытается переместить файл, фактически названный /home/jira-plugins/installed-plugins/* , но он не существует и, следовательно, сообщение об ошибке.
  • Сделать суперпользователь действовать как какой-либо другой пользователь в определенном дереве каталогов
  • Разрешить определенным гостям выполнять определенные команды
  • Не найдено ни одной версии кандидата для sudo
  • sudo отсутствует в Palm WebOS - могу ли я добавить его?
  • Скрипт с использованием sudo работает с терминала, но не с ярлыка на рабочем столе
  • Способы выполнения команды оболочки как root?
  • sudo -E env PATH = $ PATH
  • Запросить пароль sudo, а не дать ошибку доступа
  • Автозаполнение для недоступных каталогов
  • Опция NOPASSWD не применяется к второй команде
  • Случайно удаленный / dev / tty, как вернуть его на debian7?
  • Linux и Unix - лучшая ОС в мире.