O que são "." E ".." em um diretório?

15

Com base na pergunta: Como tornar o uso do prompt de comando menos doloroso , quais são as entradas .e ..na resposta mais votada? Eu o vejo quando faço um dircomando, mas não é visível para o usuário na forma de um arquivo.

Caso você não saiba o que quero dizer, aqui está um exemplo:

.
..
Su.exe
Sup.txt
SuperUser.COM
Comunidade
fonte

Respostas:

40

O . é o diretório atual, enquanto .. significa o diretório pai. Isso torna as coisas mais rápidas na linha de comando, assim você não precisa digitar os caminhos completos.

exemplo:

suba 2 diretórios:

cd ..\..\

ou em um sistema baseado em UNIX, para executar binários executáveis ​​no diretório atual:

./program

Muitos scripts UNIX também serão utilizados. para representar o diretório atual, a fim de procurar por arquivos, por exemplo (Perl):

#!/usr/bin/perl

opendir ( DIR, "." ) || die "Error opening current directory\n";
while( ($f = readdir(DIR))){
     print("$f\n");
}
closedir(DIR);

É muito mais portátil se você deseja mover o script para diretórios ou sistemas diferentes, pois o nome de um diretório não é codificado.

John T
fonte
3
É pouco conhecido, mas a linha de comando do Windows estende isso ainda mais. . = este diretório .. = diretório principal ... = diretório principal dos pais 3 pontos às vezes são úteis, muito mais que isso e é muito difícil de lidar.
salmonmoose
4
3 pontos não funciona para mim, usando o Vista
Kevin Panko
1
nem eu no Windows 7 RTM de 64 bits. Parece um mito para mim. o que há de errado com .. \ .. afinal?
AdamV
2
@ salmonmoose: Também não funciona para mim no XP.
Simon P Stevens
10

O ..é usado para navegar na hierarquia do sistema de arquivos. É útil quando você não deseja digitar um caminho longo ou quando escreve um script / programa que não sabe exatamente onde será instalado, mas sabe que ../media/deve conter todas as imagens / vídeos / ícones etc.

O ponto único .é útil no linux, onde você deseja executar um executável no diretório atual, para que você digite ./a.outporque o shell de comando, por padrão, não procura no arquivo atual arquivos executáveis ​​(por razões de segurança).

O ponto único .também é usado se você deseja passar o diretório atual como argumento para um comando.

hasen
fonte
1
O PowerShell também não inclui. na lista de caminhos para pesquisar executáveis.
Joey
Como passar '.' como argumento para um comando?
Cálculo
@DeFu você passar o ponto como um ponto, por exemplo:ls .
Hasen
ls funciona da mesma forma quels .
Cálculo
@ DeFu bem, sim, mas quando ls .você está passando '.' como argumento para 'ls'; não foi isso que você perguntou? Ele funciona da mesma maneira porque, por padrão, lslista o diretório atual e .é o diretório atual. Mas você está passando para o comando, com certeza.
Hasen
5

O . é o diretório atual. Você raramente precisa usar isso; a maioria dos comandos assumirá o diretório atual. O .. é o próximo nível; este é um atalho bastante útil. Se você estiver em C: \ foo \ bar e quiser acessar C: \ foo \ bar2, poderá dizer

cd ..\bar2

e você estará em C: \ foo \ bar2. Se você não deseja acessar o bar2, mas deseja executar apenas o C: \ foo \ bar.exe, pode dizer

..\bar.exe

ou .. \ bar para executá-lo sem voltar ao diretório pai. Obviamente, isso é mais útil quando você representa um caminho mais longo que C: \ foo (como "C: \ Usuários \ Daniel \ Meu Dropbox \".

Daniel H
fonte
1
Eu acho . às vezes, especialmente quando copiar ou mover arquivos para o local atual ( copy F:\*.foo .) ou se referir a ele de outra forma ( start .abre o Explorer no diretório atual, por exemplo).
Joey
3

Eles representam:

.

O diretório atual

.. 

Representa o diretório pai

Portanto, se você tiver o executável "su.exe" em:

  • Sua variável de ambiente Path (digamos C: \ MyExecutables \ su.exe)
  • Seu diretório atual
  • Seu diretor pai.

Você pode executar cada um assim:

 su.exe  

Executa o caminho

.\su.exe 

Executa o que está no diretório atual

..\su.exe

Executa aquele no diretório pai.

OscarRyz
fonte