De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 01 de Julho de 2007
Para alterar recursivamente a propriedade de uma árvore de diretórios para
uma determinada pessoa e grupo, usamos o comando chown
:
$ chown -R queiroz:queiroz ~queiroz
O argumento queiroz:queiroz
identifica o nome do usuário e o grupo ao
qual pertence. Fornecer os dois argumentos é opcional, podemos especificar
apenas o nome do usuário, como abaixo:
$ chown -R queiroz ~queiroz
Caso queiramos trocar apenas a propriedade do grupo, o comando é outro,
chgrp
:
$ chgrp -R queiroz ~queiroz
Até aqui tudo bem. Entretanto, frequentemente usamos os comandos chgrp
e chown em conjunto com o comando xargs
e find
:
$ find . -type d | xargs chown -R queiroz
Com o comando acima, pretendo alterar apenas a propriedade dos diretórios a partir de um determinado ponto. Se existir algum diretório com um nome que contenha espaços em branco, teremos problema.
# find . -type d | xargs chown -R queiroz
chown: impossível acessar `./Rubens': Arquivo ou diretório não encontrado
chown: impossível acessar `Queiroz': Arquivo ou diretório não encontrado
chown: impossível acessar `de': Arquivo ou diretório não encontrado
chown: impossível acessar `Almeida': Arquivo ou diretório não encontrado
chown: impossível acessar `./Rubens': Arquivo ou diretório não encontrado
chown: impossível acessar `Queiroz': Arquivo ou diretório não encontrado
chown: impossível acessar `de': Arquivo ou diretório não encontrado
chown: impossível acessar `Almeida/Dia': Arquivo ou diretório não encontrado
chown: impossível acessar `de': Arquivo ou diretório não encontrado
chown: impossível acessar `Faxina': Arquivo ou diretório não encontrado
No exemplo acima eu criei dois diretórios com espaços em branco em seu nome:
Rubens Queiroz de Almeida
e Dia de Faxina
. O comando xargs
forneceu
como entrada ao comando chown
, as partes individuais dos nomes, levando
em consideração o espaço em branco como delimitador do nome.
Para resolver este problema, precisamos informar ao comando xargs
que o
delimitador é outro:
$ find . -type d -print0 | xargs -0 chown -R queiroz
A opção -print0
termina os nomes dos arquivos com um zero, de forma que
os nomes de arquivos com espaços em branco sejam corretamente tratados. Da
mesma forma, no comando xargs
o argumento -0
indica que o separador do
nome dos arquivos é o zero e não o espaço em branco.
O argumento -print
é opcional. Versões antigas de sistemas Unix exigiam que
fosse especificado no comando find
. As versões modernas de sistemas GNU/Linux
e FreeBSD não exigem sua especificação, a não ser em casos como acima, em
que atribuimos um valor diferente do padrão ao delimitador do nome de arquivos.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários