Les entrées «.» Et «..» dans une liste dir sont-elles toujours les mêmes?

13

Quand le "." et les entrées ".." dans une liste dir diffèrent? (Je comprends qu'ils représentent deux répertoires différents, mais ils répertorient toujours de manière identique avec la même date et heure dans une commande dir par défaut. Différent-ils jamais?)

ID de protection des témoins 44583292
la source
1
Pouvez-vous donner un exemple (peut-être avec une capture d'écran)
ChrisF

Réponses:

26

Quant à la liste réelle:

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

Ils utilisent la date du répertoire actuel pour les deux. Si vous commencez C:\Users\Chris(disons), vous pourriez obtenir ce qui précède. Mais quand vous montez, C:\Usersvous obtenez:

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

La date du ..premier cas n'est donc pas la même que celle .du second. Ce qui est apparemment faux car ils sont (ou devraient être) le même répertoire. Cependant, .et ..sont des références au répertoire courant et parent et sont tous deux créés en même temps - lorsque le répertoire a été créé - donc c'est en fait correct (merci à Synetech inc pour l'avoir signalé)

La seule fois où les horodatages seraient différents est si l'un ou l'autre de .ou a ..été recréé.


La réponse originale:

. signifie le répertoire courant.

.. signifie le répertoire parent.

Donc, dans des circonstances normales, ils sont toujours différents.

La seule fois où ils donnent le même résultat, c'est lorsque vous êtes à la racine du disque. Donc, C:\> dir .et dir ..produisez la même sortie.

ChrisF
la source
répondre au point, super.
ppuschmann
Modifié pour souligner que la question concerne leur apparition dans une liste de dir.
ID de protection des témoins 44583292
@mike - a tenté de répondre à la question révisée pour justifier les votes;)
ChrisF
4
C'est faux, car ..sans l'horodatage du répertoire parent, il reçoit l'horodatage du répertoire en cours. En effet, .et ..sont tous deux créés lors de la création du répertoire.
Synetech
@Synetech - Ah! Le sou tombe
ChrisF
14

Non, ils seront toujours les mêmes. Parce que ce sont des répertoires, pas des fichiers, ils sont traités légèrement différemment (en fait, ce ne sont même pas des répertoires normaux, ce sont des pointeurs comme le disait eL01, donc ils sont traités encore plus différemment que les répertoires normaux).

Lorsque vous créez un répertoire, deux entrées sont automatiquement créées:

  • . pointe vers le répertoire nouvellement créé
  • .. pointe vers le parent du nouveau répertoire

De toute évidence, .il aura la date et l'heure actuelles de création du répertoire, et bien qu'il puisse sembler logique que l'horodatage du répertoire parent soit copié .., ce n'est pas ainsi que cela fonctionne. Lorsque vous créez un nouveau répertoire, les deux pointeurs reçoivent la date et l'heure actuelles. C'est le cas de DOS à Windows 7 sur FAT * et NTFS.

Synetech
la source
1
+1 car il semble que ce soit vous qui ayez trouvé la réponse que ChrisF présente maintenant ;-)
Jonas Heidelberg
@ Jonas, en fait, la réponse de ChrisF fait la même supposition erronée que la plupart des gens le feraient: cela ..aurait l'horodatage du parent. (Je ne serais pas surpris qu'un jour, un nouveau système de fichiers - WinFS? - finisse par le faire de cette façon).
Synetech
À partir de sa 4e révision, je dirais qu'il ne fait plus cette hypothèse.
Jonas Heidelberg
@ Jonas, ah d'accord. Je n'ai pas vu les modifications. Eh bien, il obtient de toute façon de nouveaux votes positifs; Je suppose que c'est le but de la fonction d'édition.
Synetech
J'aurais dû vous créditer dans cette dernière révision - je le ferai maintenant.
ChrisF
4

En fait, je ne peux pas vous donner de preuve, mais je pense: chaque répertoire a une liste de répertoires et de fichiers qu'il contient. Pour permettre d'utiliser des chemins relatifs, chaque répertoire a besoin de ces deux pointeurs - un pour lui .- même et l'autre répertoire un niveau au ..- dessus - ces deux pointeurs sont juste créés au moment où le répertoire lui-même est créé.

Ainsi, l'horodatage de ..n'est en fait pas l'horodatage du répertoire ci-dessus mais l'horodatage du pointeur vers le répertoire ci-dessus.

eL01
la source
C'est exact. L' ..entrée reçoit l'horodatage de la date et de l'heure actuelles lorsque le répertoire actuel est créé.
Synetech