O que há de tão especial nos diretórios cujos nomes começam com um ponto?

25

Eu queria saber qual era a diferença entre esses dois:

~/somedirectory/file.txt

e

~/.somedirectory/file.txt

É realmente difícil perguntar isso no Google, pois eu não sabia como explicar .quando nem sabia como chamá-lo. Mas alguém pode descrever a diferença entre incluir o ponto e excluí-lo?

Templário das Trevas
fonte

Respostas:

18

Sob sistemas do tipo unix, todos os diretórios contêm duas entradas .e.. , que representam o próprio diretório e seu pai, respectivamente. Essas entradas não são interessantes na maioria das vezes, por isso as lsoculta e os curingas do shell como *não as incluem. De maneira mais geral, os lscuringas ocultam todos os arquivos cujo nome começa com a .; esta é uma maneira simples para excluir .e ..e permitir aos usuários ocultar outros ficheiros a partir de listagens. Além de ser excluído das listagens, não há nada de especial nesses arquivos.

O Unix armazena arquivos de configuração por usuário no diretório inicial do usuário. Se todos os arquivos de configuração aparecessem nas listagens de arquivos, o diretório inicial estaria cheio de arquivos com os quais os usuários não se importam todos os dias. Portanto, os arquivos de configuração sempre começam com a .: normalmente, o arquivo de configuração do aplicativo Foo é chamado de algo como .fooou .foorc. Por esse motivo, os arquivos de configuração do usuário são geralmente conhecidos como arquivos de ponto .

Gilles 'SO- parar de ser mau'
fonte
1
"De modo mais geral, lse curingas esconder todos os arquivos cujo nome começa com um ., o que é uma maneira simples para excluir .e ..e permitir aos usuários ocultar outros ficheiros a partir de listas." Parece o seguinte: O conceito de ocultar arquivos / diretórios que começam com um ponto parece realmente oculto . ... Mais tarde, porém, as pessoas perceberam que a capacidade de ocultar alguns arquivos / diretórios tem um valor e, portanto, começaram a colocar um ponto no início dos arquivos que eles queriam ocultar. Esse é realmente o caso ou apenas uma especulação?
Utku
3
@Utku Na verdade, foi o contrário, pelo menos a princípio: o desenvolvedor original pretendia se esconder apenas .e ..cometeu um erro . No entanto, é possível que ele tenha sido dissuadido de corrigi-lo porque alguns usuários o acharam útil, e a razão pela qual os arquivos de configuração do usuário começam .é definitivamente para que eles não atrapalhem a saída do lsdiretório inicial. Acho que temos uma pergunta sobre isso aqui, mas não consigo encontrá-la, pode ter sido incorreta.
Gilles 'SO- stop be evil'
15

Diretórios começando com um ponto .são considerados ocultos. Que significa:

  • ~/somedirectorye ~/.somedirectorysão diretórios diferentes. Ou seja, se ~/somedirectoryexistisse e você fez mkdir ~/.somedirectory, você não falhará com uma File Existsmensagem.

  • O lscomando não mostrará os diretórios começando com o.

  • O ls -amostrará os dois diretórios

Tom
fonte
6
ls -A exibe arquivos e diretórios que começam com. mas não inclui o. e .. entradas.
Julian
7

Para detalhes sobre o sistema de arquivos Unix, verifique o padrão . Especificamente, os arquivos de ponto são usados ​​para arquivos de configuração em um diretório de usuários e, se um programa tiver mais de um, deve colocá-los em um diretório de pontos.

Isso oculta os arquivos do usuário, a menos que ele queira encontrá-los . Dessa forma, eles não atrapalham, e as ferramentas não mexem com eles acidentalmente.

Spencer Rathbun
fonte
4

A liderança "." em um diretório ou nome de arquivo faz com que esse diretório ou arquivo fique oculto ao executar um lscomando.


fonte
1
Você pode ver todos os arquivos começando com "." com ls -a.
Sardathrion - Restabelece Monica
1

Como o @DaveNay já disse, esse período fará com que o arquivo ou diretório fique oculto.

Para sua segunda pergunta implícita, é assim que você pesquisa isso no google:

Basta digitar na caixa de pesquisa: período linux antes do nome


fonte