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?

12

Inicialmente, achei que era uma coincidência, mas agora vejo que há uma tag : nomes de arquivos ocultos começam com um ponto. Isto é uma convenção? Por que foi escolhido? Pode ser mudado? Ou em outras palavras (como uma questão relacionada sugeriu @evilsoup que implica a resposta para um monte de outros): posso ocultar arquivos sem renomeá-los (usando . como o primeiro caractere de seu nome)?

    
por JMCF125 30.08.2013 / 16:11

3 respostas

22

De acordo com a Wikipedia ,

The notion that filenames preceded by a . should be hidden is the result of a software bug in the early days of Unix. When the special . and .. directory entries were added to the filesystem, it was decided that the ls command should not display them. However, the program was mistakenly written to exclude any file whose name started with a . character, rather than the exact names . or ...

... então começou como um bug, e então 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 tenha se preocupado em implementar a ocultação de arquivos no estilo do Windows.

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

Existe outro método para esconder arquivos que não envolvem renomeá-los, mas ele só funciona para gerenciadores de arquivos GUI (e não é universal entre eles - os principais Linux o usam, mas Eu não acho que o Finder da OSX faz, e os gerenciadores de arquivos Linux, com menos nichos, são menos propensos a suportar este comportamento): você pode criar um arquivo chamado .hidden , e colocar os nomes dos arquivos que você deseja esconder, um por linha. ls e shell globs não respeitarão isso, mas pode ser útil para você ainda.

    
por 30.08.2013 / 19:05
15

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 escolher faça o mesmo ou não). Os arquivos que começam com um ponto não estão "ocultos" porque "oculto" não é um dos seus atributos. Ao contrário do DOS / Windows, "oculto" não é um atributo no Unix. Existem muitos atributos no Unix ("man chattr" irá dizer-lhe todos eles) mas oculto não é um deles. / p>

A razão pela qual os arquivos de ponto são ignorados por "ls" é realmente engraçada / constrangedora. Não foi uma decisão de design, mas o resultado de um bug de software nos primeiros dias do Unix . Quando o especial. e .. entradas de 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 apressadamente para excluir qualquer arquivo cujo nome tenha começado com a. caractere, em vez dos nomes exatos "." ou "..". E criou um precedente que vem sendo seguido desde então no Unix. Curiosamente, quando os caras do Unix se mudaram para criar o Plan 9 eles não colocaram os arquivos de ponto de propósito .

    
por 30.08.2013 / 19:11
0

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

Um driver do sistema de arquivos pode ocultar todos os arquivos desejados, simplesmente omitindo seus nomes quando ele fornece resultados às chamadas do sistema que são usadas para obter uma listagem de diretórios. Como o sergut descreveu em sua resposta, os arquivos que começam com um ponto não estã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 de cluster do 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ê sabe que está lá, você pode acessá-lo muito bem.

Se você estiver usando o recurso de instantâneo do sistema de arquivos ACFS, poderá acessar quaisquer instantâneos existentes do sistema de arquivos desse sistema de arquivos através do diretório .ACFS . Se não estivesse oculto, um programa de backup poderia acabar fazendo o 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.

    
por 24.11.2017 / 07:54