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?
command-line
chown
Marco Marsala
la source
la source
chown -R myuser:mygroup ./*
Réponses:
Comme l'expansion glob (nom de chemin) est effectuée en premier par le shell avant les
chown
exécutions, le modèle glob*
est d'abord étendu à tous les fichiers du répertoire actuel et leschown
obtient en tant qu'options et arguments. Vous avez un fichier dans le répertoire courant qui commence par-i
, donc lechown
considère comme une option, pas comme un argument (nom de fichier).Vous devez utiliser
--
pour indiquer la fin des options pourchown
:Ou précédez le motif glob (
*
) avec./
pour l'indiquer explicitement comme argument:la source
chown -R myuser:mygroup ./*
, il divise enchown
,-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.Le problème était un fichier nommé
-index.php
dans 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 -- *
la source