Ho uno strano problema con il seguente comando:
# chown -R myuser:mygroup *
chown: invalid option -- 'i'
Try 'chown --help' for more information.
il comando non è alias
# type chown
chown is hashed (/bin/chown)
Dove posso guardare oltre?
Ho uno strano problema con il seguente comando:
# chown -R myuser:mygroup *
chown: invalid option -- 'i'
Try 'chown --help' for more information.
il comando non è alias
# type chown
chown is hashed (/bin/chown)
Dove posso guardare oltre?
Risposte:
Man mano che l'espansione glob (nome percorso) viene eseguita per prima dalla shell prima delle chown
esecuzioni, il modello glob *
viene prima esteso a tutti i file nella directory corrente e li chown
ottiene come opzioni e argomenti. Hai un file nella directory corrente che inizia con -i
, quindi chown
lo considera come un'opzione, non come un argomento (nome file).
È necessario utilizzare --
per indicare la fine delle opzioni per chown
:
chown -R myuser:mygroup -- *
O precedere il modello glob ( *
) con ./
per indicarlo esplicitamente come argomento:
chown -R myuser:mygroup ./*
chown -R myuser:mygroup ./*
, si divide in chown
, -R
, myuser:mygroup
, ./*
e quindi sostituisce modelli glob ai corrispondenti percorsi del file system, ad es. chown
, -R
, myuser:mygroup
, ./-index.html
, ./favicon.ico
, ./My -ve Numbers
. Dal momento che chown cerca solo il primo carattere che è un trattino quando cerca argomenti di opzione, presumerà che quelli siano argomenti di posizione.
Il problema era un file chiamato -index.php
nella cartella, quindi chown lo interpretava come un'opzione della riga di comando.
La soluzione stava usando i doppi trattini chown -R myuser:mygroup -- *
chown -R myuser:mygroup ./*