Por que os shell globs omitem os arquivos de ponto por padrão? [duplicado]

0

1)

echo *

Exibe apenas nomes de arquivos com [a-z, A-Z], mas não exibe arquivos que começam com.

Por exemplo, .bashrc não é coberto pelo shell glob *

2)

echo .* fornece o resultado esperado.

No primeiro caso, por que o shell glob não inclui nomes de arquivo com ponto?

    
por overexchange 21.04.2017 / 11:49

1 resposta

6

É assim que a globbing funciona, por padrão (em geral, não apenas em shells). De acordo com a glob(7) manpage :

Pathnames

[...]

If a filename starts with a '.', this character must be matched explicitly. (Thus, rm * will not remove .profile, and tar c * will not archive all your files; tar c . is better.)

Veja também a seção relevante do POSIX .

Existem configurações de shell que você pode usar para alterar isso, ou modificadores de globbing em alguns shells que você pode adicionar para alterar o comportamento temporariamente; veja Qual é a configuração no bash para globbing, para controlar se * corresponde a arquivos de ponto para obter mais detalhes.

    
por 21.04.2017 / 11:55