Le voci “.” E “..” in un elenco dir sono sempre le stesse?


13

Quando sarebbe il "." e ".." le voci in un elenco dir differiscono? (Capisco che rappresentano due directory diverse, ma elencano sempre in modo identico con la stessa data e ora in un comando dir predefinito. Differiscono mai?)


1
Puoi fare un esempio (forse con una schermata)
ChrisF,

Risposte:


26

Per quanto riguarda l'elenco effettivo:

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

Stanno usando la data della directory corrente per entrambi. Se inizi C:\Users\Chris(diciamo) potresti ottenere quanto sopra. Ma quando vai su C:\Usersottieni:

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

Quindi la data di ..nel primo caso non coincide con la data di .nel secondo. Che è apparentemente sbagliato in quanto sono (o dovrebbero essere) la stessa directory. Tuttavia, .e ..sono i riferimenti alla directory corrente e genitore e sono entrambi creati allo stesso tempo - quando la directory è stato creato - quindi è in realtà corretto (grazie a Synetech inc per la precisazione)

L'unica volta in cui i timestamp sarebbero diversi è se l'uno o l'altro .o ..fossero ricreati.


La risposta originale:

. indica la directory corrente.

.. indica la directory principale.

Quindi, in circostanze normali, sono sempre diversi.

L'unica volta in cui producono lo stesso risultato è quando sei alla radice del disco. Quindi a C:\> dir .e dir ..produrre lo stesso output.


rispondi al punto, fantastico.
ppuschmann,

Modificato per enfatizzare la domanda riguarda il loro aspetto in un elenco di dir.
ID protezione testimone 44583292,

@mike - ha cercato di rispondere alla domanda rivista per giustificare i voti;)
ChrisF,

4
Questo è sbagliato, perché ..non viene dato il timestamp della directory principale, viene dato il timestamp della directory corrente. Questo perché .e ..sono entrambi creati quando viene creata la directory.
Synetech,

@Synetech - Ah! Il penny scende
ChrisF,

14

No, saranno sempre gli stessi. Poiché si tratta di directory, non di file, sono gestite in modo leggermente diverso (in realtà, non sono nemmeno directory normali, sono puntatori come diceva eL01, quindi sono gestite in modo ancora più diverso rispetto alle directory normali).

Quando si crea una directory, vengono create automaticamente due voci:

  • . punta alla directory appena creata
  • .. punta al genitore della nuova directory

Ovviamente .avrà la data e l'ora correnti in cui viene creata la directory, e mentre può sembrare logico copiare il timestamp della directory padre .., non è così che funziona. Quando si crea una nuova directory, entrambi i puntatori ricevono la data e l'ora correnti. Questo è il caso da DOS a Windows 7 su FAT * e NTFS.


1
+1 dato che sembra che tu sia stato tu a trovare la risposta che ChrisF sta presentando ;-)
Jonas Heidelberg,

@Jonas, in realtà, la risposta di ChrisF fa lo stesso presupposto errato che la maggior parte delle persone vorrebbe: quello ..avrebbe il timestamp del genitore. (Non sarei sorpreso se un giorno un nuovo file system - WinFS? - dovesse finalmente farlo in quel modo).
Synetech,

A partire dalla sua quarta revisione direi che non fa più questa ipotesi.
Jonas Heidelberg,

@Jonas, ah ok. Non ho visto le modifiche. Vabbè, sta ricevendo comunque nuovi voti positivi; Immagino sia questo il punto della funzione di modifica.
Synetech,

Avrei dovuto accreditarti nell'ultima revisione - lo farò ora.
ChrisF,

4

In realtà non posso darti prove, ma penso: ogni directory ha un elenco di directory e file che contiene. Per rendere possibile l'uso di percorsi relativi, ogni directory ha bisogno di quei due puntatori - uno su se stesso .e l'altra directory di un livello sopra ..- quei due puntatori vengono creati appena al momento della creazione della directory stessa.

Quindi il timestamp di non ..è in realtà il timestamp della directory sopra ma il timestamp del puntatore alla directory sopra.


È corretto. Alla ..voce viene assegnato il timestamp della data e ora correnti quando viene creata la directory corrente.
Synetech,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.