chown: ungültige Option - 'i' Versuchen Sie 'chown --help' für weitere Informationen

15

Ich habe ein seltsames Problem mit dem folgenden Befehl:

# chown -R myuser:mygroup *
chown: invalid option -- 'i'
Try 'chown --help' for more information.

Der Befehl ist kein Alias

# type chown
chown is hashed (/bin/chown)

Wo kann ich weiter schauen?

Marco Marsala
quelle
1
Sie könnten versuchenchown -R myuser:mygroup ./*
Kris

Antworten:

28

Da die Glob-Erweiterung (Pfadname) vor der Ausführung zuerst von der Shell ausgeführt wird chown, wird das Glob-Muster zuerst *auf alle Dateien im aktuellen Verzeichnis erweitert und chownerhält diese als Optionen und Argumente. Sie haben eine Datei im aktuellen Verzeichnis, die mit beginnt -i, daher chownwird sie als Option und nicht als Argument (Dateiname) betrachtet.

Sie müssen verwenden --, um das Ende der Optionen anzugeben für chown:

chown -R myuser:mygroup -- *

Oder stellen Sie dem Glob-Muster ( *) ./das explizite Argument voran:

chown -R myuser:mygroup ./*
heemayl
quelle
Das Präfix ./ bedeutet nicht, dass es sich um ein Argument handelt (hier Dateiname), aber es bedeutet, dass keiner der erweiterten Namen wie eine Option aussieht (beginnend mit "-"). Wenn die Schale eine Zeile wie sieht chown -R myuser:mygroup ./*er teilt sie in chown, -R, myuser:mygroup, ./*und ersetzt dann glob - Muster mit den entsprechenden Dateisystempfade, z. chown, -R, myuser:mygroup, ./-index.html, ./favicon.ico, ./My -ve Numbers. Da chown bei der Suche nach Optionsargumenten nur darauf achtet, dass das erste Zeichen ein Bindestrich ist, wird davon ausgegangen, dass es sich um Positionsargumente handelt.
Jim Driscoll
7

Das Problem war eine Datei mit dem Namen -index.phpim Ordner, daher wurde sie von chown als Befehlszeilenoption interpretiert.

Die Lösung bestand aus den doppelten Bindestrichen chown -R myuser:mygroup -- *

Marco Marsala
quelle
4
ist das nicht die gleiche Antwort, die @heemayl bereits gegeben hat?
Kris
3
@Kris beide Antworten wurden fast gleichzeitig gepostet
;-)
1
Sie haben den Benutzer und die Gruppe in Ihrer Frage, aber nicht in Ihrer Antwort verschleiert ...
Thomas
3
@Kris Es ist ziemlich unwahrscheinlich, dass er die andere Antwort innerhalb von 39 Sekunden nach dem Posen kopiert hat.
UTF-8,
Entschuldigung, ich wollte das nicht andeuten.
Kris