¿Las entradas "." Y ".." en una lista de directorios son siempre las mismas?

13

¿Cuándo sería el "." y las entradas ".." en una lista de directorios difieren? (Entiendo que representan dos directorios diferentes, pero siempre se enumeran de forma idéntica con la misma fecha y hora en un comando dir predeterminado. ¿Alguna vez difieren?)

ID de protección de testigos 44583292
fuente
1
¿Puedes dar un ejemplo (quizás con una captura de pantalla)
ChrisF

Respuestas:

26

En cuanto a la lista real:

27/08/2011  11:23    <DIR>          .
27/08/2011  11:23    <DIR>          ..

Están utilizando la fecha del directorio actual para ambos. Si comienza en C:\Users\Chris(digamos), puede obtener lo anterior. Pero cuando subes C:\Users, obtienes:

26/07/2011  21:20    <DIR>          .
26/07/2011  21:20    <DIR>          ..

Entonces, la fecha de ..en el primer caso no es la misma que la fecha .en el segundo. Lo que aparentemente es incorrecto ya que son (o deberían ser) el mismo directorio. Sin embargo, .y ..son referencias al directorio actual y principal y ambos se crean al mismo tiempo, cuando se creó el directorio, por lo que es realmente correcto (gracias a Synetech inc por señalar esto)

El único momento en que las marcas de tiempo serían diferentes es si una u otra de .o ..fueron recreadas.


La respuesta original:

. significa el directorio actual.

.. significa el directorio padre.

Entonces, en circunstancias normales, siempre son diferentes.

La única vez que producen el mismo resultado es cuando estás en la raíz del disco. Entonces en C:\> dir .y dir ..producir la misma salida.

ChrisF
fuente
responde al punto, genial.
ppuschmann
Editado para enfatizar la pregunta es sobre su aparición en una lista de directorios.
Identificación de protección de testigos 44583292
@mike - trató de responder la pregunta revisada para justificar los votos;)
ChrisF
44
Eso está mal, porque ..no se le da la marca de tiempo del directorio principal, se le da la marca de tiempo del directorio actual. Esto se debe .y ..se crean tanto cuando se crea el directorio.
Synetech
@Synetech - ¡Ah! The penny drops
ChrisF
14

No, siempre serán lo mismo. Debido a que estos son directorios, no archivos, se manejan de manera ligeramente diferente (de hecho, ni siquiera son directorios normales, son punteros como dijo eL01, por lo que se manejan de manera aún más diferente que los directorios normales).

Cuando crea un directorio, se crean automáticamente dos entradas:

  • . apunta al directorio recién creado
  • .. apunta al padre del nuevo directorio

Obviamente .tendrá la fecha y hora actuales en que se creó el directorio, y si bien puede parecer lógico copiar la marca de tiempo del directorio principal .., no es así como funciona. Cuando crea un nuevo directorio, ambos punteros reciben la fecha y hora actuales. Este es el caso de DOS a través de Windows 7 en FAT * y NTFS.

Synetech
fuente
1
+1 ya que parece que tú eras la respuesta ChrisF ahora está presentando ;-)
Jonas Heidelberg
@Jonas, en realidad, la respuesta de ChrisF hace la misma suposición errónea que la mayoría de la gente haría: eso ..tendría la marca de tiempo del padre. (No me sorprendería si algún día, un nuevo sistema de archivos, ¿WinFS?, Finalmente lo hiciera de esa manera).
Synetech
Comenzando con su cuarta revisión , diría que ya no hace esa suposición.
Jonas Heidelberg
@ Jonas, ah está bien. No vi las ediciones. Oh bueno, de todos modos está obteniendo nuevos votos positivos; Supongo que ese es el punto de la función de edición.
Synetech
Debería haberte acreditado en esa última revisión, lo haré ahora.
ChrisF
4

En realidad no puedo darte pruebas, pero creo que: cada directorio tiene una lista de directorios y archivos que contiene. Para que sea posible utilizar rutas relativas, cada directorio necesita esos dos punteros , uno para sí mismo .y el otro directorio un nivel superior .., esos dos punteros se crean en el momento en que se crea el directorio.

Por lo tanto, la marca de tiempo de en ..realidad no es la marca de tiempo del directorio anterior, sino la marca de tiempo del puntero al directorio anterior.

eL01
fuente
Eso es correcto. La ..entrada recibe la marca de tiempo de la fecha y hora actuales cuando se crea el directorio actual.
Synetech