Tengo un problema extraño con el siguiente comando:
# chown -R myuser:mygroup *
chown: invalid option -- 'i'
Try 'chown --help' for more information.
el comando no es alias
# type chown
chown is hashed (/bin/chown)
¿Dónde puedo mirar más lejos?
command-line
chown
Marco Marsala
fuente
fuente
chown -R myuser:mygroup ./*
Respuestas:
Como la expansión glob (ruta) se realiza primero por el shell antes de las
chown
ejecuciones, el patrón glob*
se expande primero a todos los archivos en el directorio actual y loschown
obtiene como sus opciones y argumentos. Tiene un archivo en el directorio actual que comienza con-i
, porchown
lo tanto, lo está considerando como una opción, no como un argumento (nombre de archivo).Debe usar
--
para indicar el final de las opciones parachown
:O preceda el patrón glob (
*
) con./
para indicarlo explícitamente como argumento:fuente
chown -R myuser:mygroup ./*
, que la divide enchown
,-R
,myuser:mygroup
,./*
y luego reemplaza patrones globales con las trayectorias del sistema de ficheros correspondientes, por ejemplo.chown
,-R
,myuser:mygroup
,./-index.html
,./favicon.ico
,./My -ve Numbers
. Dado que chown solo busca que el primer personaje sea un guión al buscar args opcionales, se supondrá que esos son args posicionales.El problema era un archivo nombrado
-index.php
en la carpeta, por lo que chown lo interpretó como una opción de línea de comando.La solución estaba usando los guiones dobles
chown -R myuser:mygroup -- *
fuente