Por que “ls” não listará arquivos começando com “.” no Linux

1

Eu estava procurando uma pasta " .android " e usei ls em todo o lugar, até que decidi usar locate (depois de um updatedb ) e descobri que estava na minha pasta /home/johndoe/ durante todo esse tempo. Quando eu ls na pasta, a pasta .android não está listada. Alguém pode por favor explicar por que isso não está listando para mim com o meu amado comando ls ?

    
por N8sBug 07.08.2013 / 03:48

3 respostas

2

Arquivos e pastas que começam com . são arquivos ocultos em um SO típico do tipo UNIX.

Use ls -a para listar todos os arquivos.

    
por 07.08.2013 / 03:52
3

Tradicionalmente, em sistemas operacionais UNIX e UNIX, o prefixo . significa um arquivo oculto , semelhante ao sinalizador "Oculta" no Windows. Ele funciona em qualquer lugar, mas seu principal uso é ocultar os arquivos de configuração em seu diretório pessoal (por exemplo, ~/.cache/ ou ~/.plan - eles são freqüentemente chamados de "dotfiles").

Para forçar o ls a exibir arquivos ocultos, você precisa da opção -a .

Quase todos os gerenciadores de arquivos gráficos também honram esse prefixo; Ctrl H alterna arquivos "ocultos" no GNOME.

Como Rob Pike escreve no Google+ , esse foi um recurso acidental:

Long ago, as the design of the Unix file system was being worked out, the entries . and .. appeared, to make navigation easier. I'm not sure but I believe .. went in during the Version 2 rewrite, when the file system became hierarchical (it had a very different structure early on). When one typed ls, however, these files appeared, so either Ken or Dennis added a simple test to the program. It was in assembler then, but the code in question was equivalent to something like this:

if (name[0] == '.') continue;

This statement was a little shorter than what it should have been, which is

if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;

but hey, it was easy.

Two things resulted.

First, a bad precedent was set. A lot of other lazy programmers introduced bugs by making the same simplification. Actual files beginning with periods are often skipped when they should be counted.

Second, and much worse, the idea of a "hidden" or "dot" file was created. As a consequence, more lazy programmers started dropping files into everyone's home directory. I don't have all that much stuff installed on the machine I'm using to type this, but my home directory has about a hundred dot files and I don't even know what most of them are or whether they're still needed. Every file name evaluation that goes through my home directory is slowed down by this accumulated sludge.

    
por 07.08.2013 / 03:56
0

Você precisa passar o "-a" para o parâmetro "all" para ls a exibir arquivos de ponto.

    
por 07.08.2013 / 03:51

Tags