Por que são. e .. saem como arquivos ocultos quando fazemos ls -a? [duplicado]

1

É algo como, por padrão, eles são adicionados a todos os diretórios criados para facilitar a movimentação externa?

    
por BEWARB 05.03.2017 / 05:05

3 respostas

2

Nomes de arquivo de pontos principais

Resposta simples é porque esses nomes de arquivos começam com um ponto. Qualquer nome de arquivo que comece com um ponto é considerado um arquivo oculto no Linux (mesmo se, neste caso, o nome do arquivo em si é apenas um caractere longo) e é basicamente uma "tradição" que remonta ao primeiro Unix OS. Você pode visualizá-los com ls -a .

Se você quiser saber por que, no nível de código, ele é definido como padrão no arquivo ls.c de src/ls.c no pacote coreutils:

638 static enum
639 {
640   /* Ignore files whose names start with '.', and files specified by
641      --hide and --ignore.  */
642   IGNORE_DEFAULT,
643 
644   /* Ignore '.', '..', and files specified by --ignore.  */
645   IGNORE_DOT_AND_DOTDOT,
646 
647   /* Ignore only files specified by --ignore.  */
648   IGNORE_MINIMAL
649 } ignore_mode;

Aplicativos simples

Você perguntou:

  

É algo como, por padrão, eles são adicionados a todos os diretórios criados para facilitar a movimentação externa?

Sim, pois . refere-se ao próprio diretório e .. refere-se ao diretório pai. A exceção é o diretório / , que é a raiz da árvore do sistema de arquivos. Nesse caso, .. refere-se a / em si, pois não há diretório acima dele. Em vez de memorizar cada caminho, a conveniência é que você pode subir um nível usando cd .. . Simples, certo? Agora imagine que você tem um caminho muito longo. É inconveniente digitar o caminho completo para o diretório pai, enquanto .. é muito mais simples. Ele também permite scripts simples, como essa função que eu mantenho em .bashrc :

goup() {
    num= 
    while [ $num -ne 0 ] 
    do
        cd .. 
        num=$(expr $num - 1 ) 
    done 
} 

Especificando goup 5 i pode ir até 5 diretórios, onde cada .. se refere ao pai de um pai de um pai.

No caso de . , ele pode ser usado por scripts para determinar sua localização atual, se necessário.

Em outros idiomas, utilitários

As conchas são de atenção óbvia. Seu comportamento é o mesmo de ls , ignorando nomes de arquivos quando se usa glob

$ echo *
LICENSE README.md ayatana-indicator ayatana-indicator.desktop debian
star:

Podemos imitar ls -a com o shell glob se adicionarmos .* para incluir arquivos ocultos.

$ echo * .*
LICENSE README.md debian indicator-bulletin indicator-bulletin.desktop .git .gitignore

Por outro lado, alguns outros programas / utilitários e linguagens de programação não escondem esses itens (ou pelo menos não escondem . ). Sua finalidade, no entanto, é muito mais extensa do que simplesmente listar diretórios, e eles são muito mais adequados para analisar arquivos (Por favor, leia Por que você não deve analisar? a saída de ls (1) ).

$ find -maxdepth 1 
.
./.git
./README.md
./LICENSE
./debian
./indicator-bulletin.desktop
./.gitignore
./indicator-bulletin

$ perl -le 'opendir(dh,$ARGV[0]);while( $file = readdir(dh) ){ print $file; }; closedir(dh);' "."                 
.git
..
README.md
LICENSE
debian
.
indicator-bulletin.desktop
.gitignore
indicator-bulletin

O os.listdir() do Python é uma exceção notável - ele não mostra . nem .. . O módulo glob pode ser usado para mostrar o mesmo comportamento que em shells.

$ python -c 'import os;print(os.listdir("."))'                                                                    
['.git', 'README.md', 'LICENSE', 'debian', 'indicator-bulletin.desktop', '.gitignore', 'indicator-bulletin']

$ python -c 'import glob;print(glob.glob(".*"),glob.glob("*"))'                                                   
(['.git', '.gitignore'], ['README.md', 'LICENSE', 'debian', 'indicator-bulletin.desktop', 'indicator-bulletin'])
    
por Sergiy Kolodyazhnyy 05.03.2017 / 05:10
2

No MS-DOS e no Windows também há . e .. . Simplesmente . representa o diretório atual e .. representa o diretório pai.

O MS-DOS nasceu do sistema operacional CPM quando Bill Gates comprou direitos de US $ 80.000 e licenciou a IBM como PC-DOS que se transformou em MS-DOS que se transformou em Windows e que lhe renderá trilhões de dólares no final.

O Linux também usa . e .. , pois a primeira versão do sistema de arquivos era baseada no hardware IBM PC-AT.

Como o Serg respondeu no Linux . e .. não aparecem no comando ls porque qualquer arquivo que comece com . é um arquivo oculto. Você pode usar o ll alias para ver esses arquivos.

No MS-DOS e no Linux, você pode usar o comando cd .. para mudar para o diretório pai. No Linux, quando você deseja chamar um comando no diretório atual (não no caminho), é necessário prefixar o comando com ./ . No MS-DOS, no entanto, ele procurará automaticamente no diretório atual pelo comando antes de pesquisar o PATH.

O Apple Mac e o Google Android são baseados no sistema operacional Linux, mas não sei se os sistemas de arquivos também usam . e .. .

    
por WinEunuuchs2Unix 05.03.2017 / 05:18
1

Um arquivo que começa com . é um arquivo oculto. A parte oculta é uma conveniência de fornecer ao usuário uma saída mais limpa do que ele pode estar procurando para ver.

Em circunstâncias normais, o usuário está procurando uma saída de arquivos com os quais ele trabalhará, como arquivos de processadores de texto, imagens e outros dados no sistema.

A opção -a é um argumento para mostrar arquivos ALL . Isso inclui os arquivos ocultos.

Os arquivos ocultos são normalmente arquivos especiais, como arquivos de configuração e auxiliares. Você pode vê-los incluindo arquivos All ou hidden em sua saída. O navegador de arquivos GUI tem uma opção Mostrar oculto .

Neste caso, dos arquivos que são . e .. . Eles são a especificação do seu diretório. O ponto único é o seu diretório atual. O ponto duplo é o diretório pai. Você pode fazer backup para o diretório pai de onde você está digitando:

$  cd ..

Assim como os outros arquivos que começam com o ponto, eles estão ocultos. Uma pessoa especificará show all para mostrar arquivos ocultos se quiserem visualizar essas especificações de diretório.

    
por L. D. James 05.03.2017 / 05:17