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?
command-line
chown
Marco Marsala
quelle
quelle
chown -R myuser:mygroup ./*
Antworten:
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 undchown
erhält diese als Optionen und Argumente. Sie haben eine Datei im aktuellen Verzeichnis, die mit beginnt-i
, daherchown
wird sie als Option und nicht als Argument (Dateiname) betrachtet.Sie müssen verwenden
--
, um das Ende der Optionen anzugeben fürchown
:Oder stellen Sie dem Glob-Muster (
*
)./
das explizite Argument voran:quelle
chown -R myuser:mygroup ./*
er teilt sie inchown
,-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.Das Problem war eine Datei mit dem Namen
-index.php
im Ordner, daher wurde sie von chown als Befehlszeilenoption interpretiert.Die Lösung bestand aus den doppelten Bindestrichen
chown -R myuser:mygroup -- *
quelle