Warum funktioniert diese sudo mv-Operation mit Platzhalter nicht?

8

Ich denke, es muss eine einfache Antwort darauf geben, aber ich kann nicht herausfinden, warum das nicht funktioniert!

Ich habe einen Ordner in meinem Home-Verzeichnis (ein paar Ebenen tiefer) namens installierte Plugins. Ich möchte den gesamten Inhalt dieses Ordners (ca. 15 JAR-Dateien) in einen anderen Ordner übertragen, der auch als installierte Plugins bezeichnet wird.

Das versuche ich:

$ 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

Was ist mein Fehler?

Der Ordner ist definitiv nicht leer. Hier ist die lsAusgabe:

$ 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
quelle
2
Befindet sich der Ordner jira-plugins in /home/oder in : /home/USER/?
Clk
Gibt es dort tatsächlich Dateien? Hast du das Globbing ausgeschaltet?
Jeff Schaller
Die Dateien sind definitiv da
esther h
2
Bitte bearbeiten Sie Ihre Frage und veröffentlichen Sie die Ausgabe von ls /home/jira-plugins/installed-plugins/.
Terdon
1
Sie haben immer noch nicht auf Terdons Informationsanfrage geantwortet. Bitte tun Sie dies.
Michael Hampton

Antworten:

17

Dies liegt mit ziemlicher Sicherheit daran, dass Ihr normales Benutzerkonto nicht auf das Verzeichnis zugreifen kann und die Shell daher nicht die Dateien auflisten kann, die mit dem Platzhalter übereinstimmen würden.

Mit einem solchen Befehl können Sie dies leicht genug bestätigen

ls /home/jira-plugins/installed-plugins

Wenn Sie eine verweigerte Berechtigung erhalten, kann die Shell auf keinen Fall einen *Platzhalter in diesem Verzeichnis erweitern.

Warum? Betrachten Sie Ihren Befehl

sudo mv / home / jira-plugins / installierte-plugins / * / var / atlassian / anwendungsdaten / jira / plugins / installierte-plugins /

Die Reihenfolge der Verarbeitung ist (1) Erweitern der Platzhalter, (2) Ausführen des Befehls, in diesem Fall sudomit einigen Argumenten, die zufällig einer mvAnweisung entsprechen.

Sie können das Problem auf zwei Arten lösen

  1. Werden Sie root und verschieben Sie die Dateien

    sudo -s
    mv /home/jira-plugins/installed-plugins/* /var/atlassian/application-data/jira/plugins/installed-plugins/                    
  2. Erweitern Sie den Platzhalter nach dem Ausführen sudo

    sudo bash -c "mv /home/jira-plugins/installed-plugins/* /var/atlassian/application-data/jira/plugins/installed-plugins/"
Roaima
quelle
Perfekt, +1 zur Erläuterung der Verarbeitungsreihenfolge für den Befehl.
Theyna
10

Beim Auflisten sudo lsdes Ordners gehe ich davon aus, dass ein oder mehrere Verzeichnisse im Pfad für normale Benutzer nicht lesbar sind. Das würde das Verhalten erklären. Das Hauptmissverständnis hier ist, wenn die globale Erweiterung des abgeschlossen *ist. Dies erfolgt durch die Shell, bevor ein Befehl aufgerufen wird. Wenn die Shell nicht über ausreichende Berechtigungen verfügt, kann sie nicht erweitert werden.

Was in diesem Fall im Detail passiert, ist:

  1. Ihre Shell versucht, die Befehlszeile zu erweitern. Da Sie nicht das Recht haben, /home/jira-plugins/installed-pluginsals Sie selbst zu lesen , kann das Glob-Muster nicht erweitert werden /home/jira-plugins/installed-plugins/*. Es wird es unverändert lassen. Nach dieser Phase *ist nicht mehr speziell.
  2. Ihre Shell ruft den Befehl sudomit den Argumenten mv /home/jira-plugins/installed-plugins/*und auf/var/atlassian/application-data/jira/plugins/installed-plugins/
  3. sudoruft mvmit den Argumenten auf /home/jira-plugins/installed-plugins/*, und/var/atlassian/application-data/jira/plugins/installed-plugins/
  4. mvversucht eine tatsächlich benannte Datei zu verschieben /home/jira-plugins/installed-plugins/*, existiert aber nicht und damit die Fehlermeldung.
Göran Uddeborg
quelle
danke, macht vollkommen Sinn. Ich akzeptierte die andere Antwort, weil sie zuerst kam, und sagte mir auch genau, was ich dagegen tun sollte.
esther h