Kiedy „.” i „..” wpisy na liście dir różnią się? (Rozumiem, że reprezentują dwa różne katalogi, ale zawsze wyświetlają identyczną listę z tą samą datą i godziną w domyślnym poleceniu dir. Czy kiedykolwiek się różnią?)
Kiedy „.” i „..” wpisy na liście dir różnią się? (Rozumiem, że reprezentują dwa różne katalogi, ale zawsze wyświetlają identyczną listę z tą samą datą i godziną w domyślnym poleceniu dir. Czy kiedykolwiek się różnią?)
Odpowiedzi:
Co do faktycznego wpisu:
27/08/2011 11:23 <DIR> .
27/08/2011 11:23 <DIR> ..
Obie używają daty bieżącego katalogu. Jeśli zaczniesz w C:\Users\Chris
(powiedzmy), możesz otrzymać powyższe. Ale kiedy podejdziesz do C:\Users
siebie, otrzymasz:
26/07/2011 21:20 <DIR> .
26/07/2011 21:20 <DIR> ..
Tak więc data ..
pierwszego przypadku nie jest taka sama jak data .
drugiego. Co jest najwyraźniej złe, ponieważ są (lub powinny być) tym samym katalogiem. Jednak .
i ..
są odniesienia do bieżących i macierzystego katalogu i są tworzone zarówno w tym samym czasie - gdy katalog został stworzony - więc jest to rzeczywiście poprawne (dzięki Synetech inc za wskazanie na to uwagę)
Tylko raz timestamps byłoby inaczej jest, jeśli jeden lub drugi z .
albo ..
zostały odtworzone.
Oryginalna odpowiedź:
.
oznacza bieżący katalog.
..
oznacza katalog nadrzędny.
Więc w normalnych okolicznościach są zawsze inne.
Jedyny raz dają taki sam wynik, gdy jesteś w katalogu głównym dysku. Więc w C:\>
dir .
i dir ..
produkuj ten sam wynik.
..
nie podano znacznika czasu katalogu nadrzędnego, podano znacznik czasu bieżącego katalogu. To dlatego, że .
i ..
są tworzone zarówno gdy katalog jest tworzony.
Nie, zawsze będą takie same. Ponieważ są to katalogi, a nie pliki, są one obsługiwane nieco inaczej (w rzeczywistości nie są nawet normalnymi katalogami, są wskaźnikami, jak powiedział eL01, więc są obsługiwane nawet bardziej niż normalne katalogi).
Podczas tworzenia katalogu automatycznie tworzone są dwa wpisy:
.
wskazuje na nowo utworzony katalog..
wskazuje element nadrzędny nowego kataloguOczywiście .
będzie miała bieżącą datę i godzinę utworzenia katalogu i chociaż może się wydawać logiczne, że znacznik czasu katalogu nadrzędnego zostanie skopiowany ..
, nie działa to w ten sposób. Podczas tworzenia nowego katalogu oba wskaźniki otrzymują bieżącą datę i godzinę. Tak jest w przypadku systemu DOS przez system Windows 7 zarówno w systemie FAT *, jak i NTFS.
..
oznaczałoby to znacznik czasu rodzica. (Nie zdziwiłbym się, gdyby pewnego dnia nowy system plików - WinFS? - miałby to w końcu zrobić).
Właściwie nie mogę dać ci dowodu, ale myślę: każdy katalog zawiera listę katalogów i plików, które zawiera. Aby umożliwić korzystanie ze ścieżek względnych, każdy katalog potrzebuje tych dwóch wskaźników - jednego do siebie, .
a drugiego katalogu jeden poziom wyżej ..
- te dwa wskaźniki są tworzone tylko w momencie tworzenia samego katalogu.
Tak więc znacznik czasu w ..
rzeczywistości nie jest znacznikiem czasu powyższego katalogu, ale znacznikiem czasu wskaźnika do katalogu powyżej.
..
Wejście podany jest znacznik czasu bieżącej daty i godziny, kiedy bieżący katalog jest tworzony.