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?)
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?)
Risposte:
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:\Users
ottieni:
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.
..
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.
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 directoryOvviamente .
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.
..
avrebbe il timestamp del genitore. (Non sarei sorpreso se un giorno un nuovo file system - WinFS? - dovesse finalmente farlo in quel modo).
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.
..
voce viene assegnato il timestamp della data e ora correnti quando viene creata la directory corrente.