chown: opção inválida - 'i' Tente 'chown --help' para obter mais informações

15

Eu tenho um problema estranho com o seguinte comando:

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

o comando não é alias

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

Onde posso procurar mais?

Marco Marsala
fonte
1
Você poderia tentarchown -R myuser:mygroup ./*
Kris

Respostas:

28

Como a expansão glob (nome do caminho) é feita primeiro pelo shell antes das chownexecuções, o padrão glob *é expandido para todos os arquivos no diretório atual primeiro e os chownrecebe como opções e argumentos. Você tem um arquivo no diretório atual que começa com -i, portanto, chownconsidera-o como uma opção, não como um argumento (nome do arquivo).

Você precisa usar --para indicar o final das opções para chown:

chown -R myuser:mygroup -- *

Ou preceda o padrão glob ( *) com ./para indicá-lo explicitamente como argumento:

chown -R myuser:mygroup ./*
heemail
fonte
Prefixar com ./ não significa que é um argumento (que significa nome do arquivo aqui), mas significa que nenhum dos nomes expandidos será parecido com uma opção (começando com "-"). Quando o shell vê uma linha como chown -R myuser:mygroup ./*, que o divide em chown, -R, myuser:mygroup, ./*e, em seguida, substitui padrões glob com os caminhos do sistema de arquivos correspondentes, por exemplo. chown, -R, myuser:mygroup, ./-index.html, ./favicon.ico, ./My -ve Numbers. Como o chown procura apenas o primeiro caractere sendo um traço ao procurar opções args, presume-se que sejam args posicionais.
Jim Driscoll
7

O problema era um arquivo nomeado -index.phpna pasta; portanto, o chown o interpretou como uma opção de linha de comando.

A solução estava usando os hífens duplos chown -R myuser:mygroup -- *

Marco Marsala
fonte
4
Não é a mesma resposta já dada por @heemayl?
Kris
3
@Kris ambas as respostas foi publicado quase ao mesmo tempo ;-)
Rinzwind
1
Você ofuscado o usuário e grupo na sua pergunta, mas não em sua resposta ...
Thomas
3
@Kris É bastante improvável que ele tenha copiado a outra resposta dentro de 39 segundos depois que ela foi apresentada.
UTF-8
desculpe, eu não quis dizer isso.
Kris