Por que os nomes de arquivos que começam com um ponto estão ocultos? Posso ocultar arquivos sem usar um ponto como primeiro caractere?


15

Inicialmente, pensei que fosse uma coincidência, mas agora vejo que há até uma etiqueta : todos os nomes de arquivos ocultos começam com um ponto. Isso é uma convenção? Por que foi escolhido? Isso pode ser mudado? Ou, em outras palavras (como uma pergunta relacionada @evilsoup sugeriu que implica a resposta para várias outras pessoas): posso ocultar arquivos sem renomeá-los (usando .como o primeiro caractere de seu nome)?


Ou "por que todos os nomes de arquivos ocultos começam com um ponto?", Se você preferir.
JMCF125

2
Sim, é uma convenção, e por que foi escolhido quem sabe, vá perguntar aos pioneiros do UNIX, é uma convenção antiga .
terdon

4
Leia o artigo relacionado da Wikipedia sobre arquivos ocultos e plus.google.com/101960720994009339267/posts/R58WgWwN9jp para conhecer os aspectos do histórico. Não pode ser alterado.
Jofel

Eu pensei que o Linux era inteiramente customizável ...
JMCF125

1
@ JMCF125, na verdade, esse comentário foi um pouco mais sarcástico do que eu pretendia, desculpe por isso. Você está realmente perguntando: 'posso ocultar arquivos sem renomeá-los?' - se for esse o caso, você deve editá-lo na sua pergunta.
precisa saber é

Respostas:


26

Segundo a Wikipedia ,

A noção de que os nomes de arquivos são precedidos por a. deve estar oculto é o resultado de um erro de software nos primeiros dias do Unix. Quando as entradas especiais .e de ..diretório foram adicionadas ao sistema de arquivos, foi decidido que o comando ls não deveria exibi-las. No entanto, o programa foi escrito por engano para excluir qualquer arquivo cujo nome começou com um .caractere, em vez dos nomes exatos .ou ...

... então começou como um bug e foi adotado como um recurso (para o registro, .é um link para o diretório atual e ..um link para o diretório acima dele, mas tenho certeza que você já sabe disso) ) Como esse método de ocultar arquivos é bom o suficiente na maioria das vezes, suponho que ninguém se incomodou em implementar o ocultação de arquivos no estilo Windows.

Há também o fato de que implementar comportamentos diferentes produziria uma quantidade ainda maior de fragmentação no mundo * nix, que é a última coisa que alguém deseja.

Há outro método para ocultar arquivos que não envolve renomeá-los, mas funciona apenas para gerenciadores de arquivos da GUI (e não é universal entre eles - os principais do Linux usam, mas não acho que o OSX's Finder o faça, e é mais provável que os gerenciadores de arquivos Linux de nicho suportem esse comportamento): você pode criar um arquivo chamado .hiddene colocar os nomes de arquivos que deseja ocultar nele, um por linha. lse globs de concha não respeitarão isso, mas ainda pode ser útil para você.


Esse esconderijo não funciona no Unity. Mas, como você abordou todas as perguntas diretamente, vou marcar isso como a resposta aceita (embora eu tenha votado nas duas respostas).
JMCF125

3
A página da Wikipedia não contém mais informações sobre isso. No entanto, Rob Pike trabalhou no UNIX no Bell Labs e fez um pequeno post sobre o assunto: plus.google.com/u/0/+RobPikeTheHuman/posts/R58WgWwN9jp
Alexander

" OS X ", não "OSX".
Peter Mortensen

14

Os arquivos que começam com um ponto são ignorados por padrão pelo comando "ls", que tem mais ou menos o mesmo efeito de arquivos "ocultos", mas não é o mesmo (outros comandos podem optar por fazer o mesmo ou não). Os arquivos que começam com um ponto não são "ocultos" porque "oculto" não é um dos seus atributos. Diferente do DOS / Windows, "oculto" não é um atributo no Unix. Existem muitos atributos no Unix ("man chattr" dirá todos eles), mas o oculto não é um deles.

A razão pela qual os arquivos de ponto são ignorados por "ls" é realmente bastante engraçado / embaraçoso. Não foi uma decisão de design, mas o resultado de um erro de software nos primeiros dias do Unix . Quando o especial. e .. as entradas do diretório foram adicionadas ao sistema de arquivos, foi decidido que o comando ls não deveria exibi-las porque elas estavam atrapalhando. No entanto, o programa foi escrito às pressas para excluir qualquer arquivo cujo nome começou com a. caractere, em vez dos nomes exatos "." ou "..". E criou um precedente que foi seguido desde então no Unix. Curiosamente, quando os caras do Unix começaram a criar o Plano 9, eles não colocaram arquivos de pontos nele de propósito .


Eu tentei man chattr, apesar de achar que talvez fosse necessário algum pacote ou programa específico para possibilitar outros arquivos ocultos.
JMCF125

0

Se você pode ocultar arquivos ou não, e em que condições, depende do sistema de arquivos que você está usando e do driver. Os sistemas de arquivos Unix tradicionais não têm um atributo "hide" para arquivos.

Um driver de sistema de arquivos pode ocultar os arquivos que deseja, simplesmente omitindo seus nomes quando fornece resultados às chamadas do sistema usadas para obter uma lista de diretórios. Como sergut descrito em sua resposta, arquivos começando com um ponto não são realmente ocultos.

(É também assim que os rootkits podem ocultar seus arquivos: eles se conectam às chamadas do sistema que produzem listagens de diretório e filtram os arquivos que desejam ocultar.)

Por exemplo, nos sistemas de arquivos em cluster Oracle ACFS, o diretório <filesystem mountpoint>/.ACFS/está realmente oculto: ele simplesmente não será listado, nem mesmo com ls -a. Mas se você souber que está lá, poderá acessá-lo perfeitamente.

Se você estiver usando o recurso de captura instantânea do sistema de arquivos ACFS, poderá acessar qualquer captura instantânea do sistema de arquivos existente desse sistema de arquivos por meio desse .ACFSdiretório. Se não estivesse oculto, um programa de backup pode acabar fazendo backup do conteúdo atual do sistema de arquivos e do conteúdo de qualquer instantâneo existente, o que provavelmente seria indesejável; normalmente você deseja fazer backup do estado atual ou do estado de um instantâneo específico.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.