chown: option invalide - 'i' Try 'chown --help' pour plus d'informations

15

J'ai un problème étrange avec la commande suivante:

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

la commande n'est pas des alias

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

Où puis-je regarder plus loin?

Marco Marsala
la source
1
Vous pouvez essayerchown -R myuser:mygroup ./*
Kris

Réponses:

28

Comme l'expansion glob (nom de chemin) est effectuée en premier par le shell avant les chownexécutions, le modèle glob *est d'abord étendu à tous les fichiers du répertoire actuel et les chownobtient en tant qu'options et arguments. Vous avez un fichier dans le répertoire courant qui commence par -i, donc le chownconsidère comme une option, pas comme un argument (nom de fichier).

Vous devez utiliser --pour indiquer la fin des options pour chown:

chown -R myuser:mygroup -- *

Ou précédez le motif glob ( *) avec ./pour l'indiquer explicitement comme argument:

chown -R myuser:mygroup ./*
heemayl
la source
Le préfixe avec ./ ne signifie pas qu'il s'agit d'un argument (signifiant ici le nom de fichier), mais cela signifie qu'aucun des noms développés ne ressemblera à une option (commençant par "-"). Lorsque le shell voit une ligne comme chown -R myuser:mygroup ./*, il divise en chown, -R, myuser:mygroup, ./*et remplace alors les modèles de Glob avec les chemins de système de fichiers correspondants, par exemple. chown, -R, myuser:mygroup, ./-index.html, ./favicon.ico, ./My -ve Numbers. Étant donné que chown ne recherche que le premier caractère étant un tiret lors de la recherche d'arguments d'option, il supposera qu'il s'agit d'arguments de position.
Jim Driscoll
7

Le problème était un fichier nommé -index.phpdans le dossier, donc chown l'a interprété comme une option de ligne de commande.

La solution utilisait les doubles tirets chown -R myuser:mygroup -- *

Marco Marsala
la source
4
n'est-ce pas la même réponse déjà donnée par @heemayl?
Kris
3
@Kris les deux réponses ont été publiées presque en même temps ;-)
Rinzwind
1
Vous avez obscurci l'utilisateur et le groupe dans votre question mais pas dans votre réponse ...
Thomas
3
@Kris Il est peu probable qu'il ait copié l'autre réponse dans les 39 secondes suivant sa pose.
UTF-8
désolé, je ne voulais pas impliquer cela.
Kris