¿Qué son "." Y ".." en un directorio?

Respuestas:

40

Los . es el directorio actual, mientras que .. significa el directorio padre. También hace que las cosas sean más rápidas en la línea de comando, por lo que no necesita escribir rutas completas.

ejemplo:

subir 2 directorios:

cd ..\..\

o en un sistema basado en UNIX, para ejecutar binarios ejecutables en el directorio actual:

./program

También se utilizarán muchos scripts de UNIX. para representar el directorio actual, para buscar archivos, por ejemplo (Perl):

#!/usr/bin/perl

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

Es mucho más portátil si desea mover el script a diferentes directorios o sistemas, ya que el nombre de un directorio no está codificado.

John T
fuente
3
Es poco conocido, pero la línea de comandos de Windows lo extiende aún más. . = este directorio .. = directorio padre ... = el directorio padre 3 puntos a veces es útil, mucho más que eso y es demasiado difícil de manejar.
salmonmoose
44
3 puntos no me funcionan, usando Vista
Kevin Panko
1
ni yo en Windows 7 64 bit RTM. Suena como un mito para mí. ¿Qué tiene de malo ... de todos modos?
AdamV
2
@salmonmoose: Tampoco funciona para mí en XP.
Simon P Stevens
10

El ..se utiliza para navegar por la jerarquía del sistema de archivos. Es útil cuando no desea escribir una ruta larga, o cuando escribe un script / programa que no sabe exactamente dónde se instalará, pero sabe que ../media/debe contener todas las imágenes / videos / iconos, etc.

El punto único .es útil en Linux donde desea ejecutar un archivo ejecutable en el directorio actual, por lo que ./a.outdebe escribir porque el shell de comandos de forma predeterminada no busca archivos ejecutables en el directorio actual (por razones de seguridad).

El punto único .también se usa si desea pasar el directorio actual como argumento a un comando.

Hasen
fuente
1
PowerShell tampoco incluye. en la lista de rutas para buscar ejecutables.
Joey
Cómo pasar '.' como argumento para un comando?
Cálculo
@DeFu pasas el punto como un punto, por ejemplo:ls .
hasen
ls funciona igual quels .
Cálculo
@DeFu bueno, sí, pero cuando lo haces ls ., estás pasando '.' como argumento para 'ls'; ¿No es eso lo que preguntaste? Funciona igual porque de manera predeterminada lsenumera el directorio actual y .es el directorio actual. Pero lo está pasando al comando, seguro.
hasen
5

Los . es el directorio actual Raramente necesita usar esto; La mayoría de los comandos asumirán el directorio actual. El ... es el siguiente nivel; Este es un atajo bastante útil. Si estás en C: \ foo \ bar y quieres ir a C: \ foo \ bar2 puedes decir

cd ..\bar2

y estarás en C: \ foo \ bar2. Si no quiere ir a bar2 pero solo quiere ejecutar C: \ foo \ bar.exe, entonces puede decir

..\bar.exe

o .. \ bar para ejecutarlo sin volver al directorio principal. Por supuesto, esto es más útil cuando está, ya que representa una ruta más larga que C: \ foo (como "C: \ Users \ Daniel \ My Dropbox \".

Daniel H
fuente
1
Encuentro . para ser bastante útil a veces, especialmente al copiar o mover archivos a la ubicación actual ( copy F:\*.foo .) o al referirse a ella de otra manera ( start .abre el Explorador en el directorio actual, por ejemplo).
Joey
3

Representan:

.

El directorio actual

.. 

Representa el directorio padre

Entonces, si tiene el ejecutable "su.exe" en:

  • Su variable de entorno Path (digamos C: \ MyExecutables \ su.exe)
  • Tu directorio actual
  • Tu padre dir.

Podrías ejecutar cada uno así:

 su.exe  

Ejecuta el que está en el camino.

.\su.exe 

Ejecuta el del directorio actual

..\su.exe

Ejecuta el del directorio padre.

OscarRyz
fuente