RogerDez
(usa Outra)
Enviado em 01/04/2020 - 22:52h
esse 'coringa' é um 'glob'. não é um coringa como os das expressões regulares.
a opção da shell que controla o glob de estrela é o 'globstar'..
nos globs não existem quantificadores, somente qualificadores.
assim, uma estrela * no 'glob' significa qualquer coisa, ou nulo/nada mais.
por ex:
[nome_diretorio]*
significa os diretórios '[nome_diretorio]' e , se houver, '[nome_diretorio]a..' , '[nome_diretorio]b..', e assim por diante.
já em uma expressão regular, '[nome_diretorio]*' não daria certo.
primeiro pq '[]' significa uma 'lista' de caracteres. mas vamos simplificar:
nome_diretorio*
neste caso, a estrela é um quantificador somente, e desta forma, ela significa que o caracter antecedente pode não existir, e se existir, pode ocorrer qualquer número de repetições deste caráter, ou seja o 'o' pode existir ou não, e se existir, ele pega tanto 'o' como 'oo' quanto 'ooo..' e assim por diante.
então glob não é um coringa propriamente dito, é um glob mesmo, essa palavra não existe facilmente. e não existe uma palavra boa para traduzir isso. como não há quantificador, um glob é um amontoado, uma lista de coisas não tão específicas quanto um coringa de uma expressão regular pode especificar.
De forma que se vc fizer
chown /diretorio/* #sem opção '-R'
estará pedindo para shell mudar o proprietário dos sub-diretorios e sub-arquivos lá presentes. pouco importa se são diretórios (arquivos especiais), ou arquivos comuns dentro de '/diretório/'.. Mas provavelmente não mudará o proprietário de '/diretorio/' em si mesmo!
se vc tivesse feito o seguinte:
chown -R /diretorio/*/
teria pedido para shell listar todos os subdiretórios dentro do '/diretório/' e mandar essa lista para o programa 'chown'. isso pq, obrigatoriamente, a barra final simboliza um diretório para a shell.
a gente escreve /home, mas na realidade a shell sempre a vê como '/home/' (com a barra no final).
então '/' ao final, qualifica o glob como sendo um diretório, obrigatoriamente.
neste útlimo caso ainda '/diretorio/*/' , o '/diretorio/' mesmo, provavelmente não iria sofrer mudança de proprietário, somente os subdiretórios (supondo que eles existam e a shell não vai dar erro!)!
Como o programa chown já tem a opção de recursividade, não é necessário utilizar um glob da shell se sua intenção for especificar um diretório e todos os arquivos que ele contém.
alguém poderá esclarecer melhor essas nomenclaturas de coringas, prestemos atenção..