Являются ли «.» и «..» записи в каталоге dir всегда одинаковы?


13

Когда бы "." и ".." записи в каталоге dir отличаются? (Я понимаю, что они представляют два разных каталога, но они всегда перечисляют одинаково с одной и той же датой и временем в команде dir по умолчанию. Они когда-либо различаются?)


1
Можете ли вы привести пример (возможно, со
снимком

Ответы:


26

Что касается фактического перечисления:

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

Они используют дату текущего каталога для обоих. Если вы начнете C:\Users\Chris(скажем), вы можете получить выше. Но когда вы поднимаетесь наверх, C:\Usersвы получаете:

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

Таким образом, дата ..в первом случае не совпадает с датой .во втором. Что, очевидно, неправильно, поскольку они (или должны быть) в одном каталоге. Однако .и.. являются ссылками на текущий и родительский каталог и оба создаются одновременно - когда каталог был создан - так что это действительно правильно (спасибо Synetech inc за указание на это)

Единственное время, когда временные метки будут другими, - это если один или другой из .или ..были воссозданы.


Оригинальный ответ:

. означает текущий каталог.

.. означает родительский каталог.

Так что в обычных условиях они всегда разные.

Единственный раз, когда они дают тот же результат, когда вы находитесь в корне диска. Так что C:\> dir .и dir ..производим одинаковый вывод.


ответ на вопрос, отлично.
ppuschmann

Отредактировано, чтобы подчеркнуть вопрос относительно их появления в списке DIR.
Защита свидетелей ID 44583292

@mike - попытался ответить на пересмотренный вопрос, чтобы оправдать голоса;)
ChrisF

4
Это неправильно, потому что ..не дана метка времени родительского каталога, ему дана метка времени текущего каталога. Это потому, что .и ..оба создаются при создании каталога.
Synetech

@Synetech - Ах! Пенни падает
ChrisF

14

Нет, они всегда будут одинаковыми. Поскольку это каталоги, а не файлы, они обрабатываются немного по-другому (на самом деле, они даже не являются обычными каталогами, они являются указателями, как сказал eL01, поэтому они обрабатываются даже более по-другому, чем обычные каталоги).

Когда вы создаете каталог, автоматически создаются две записи:

  • . указывает на вновь созданный каталог
  • .. указывает на родителя нового каталога

Очевидно, .будет иметь текущую дату и время создания каталога, и, хотя может показаться логичным, что метка времени родительского каталога будет скопирована .., это не так. Когда вы создаете новый каталог, оба указателя получают текущую дату и время. Это относится к DOS и Windows 7 на FAT * и NTFS.


1
+1, так как кажется, что вы были тем, кто придумал ответ, который теперь представляет ChrisF ;-)
Jonas Heidelberg

@Jonas, на самом деле, ответ ChrisF делает то же ошибочное предположение, что и большинство людей: у него ..будет метка времени родителя. (Я не удивлюсь, если когда-нибудь новая файловая система - WinFS? - наконец сделает это таким образом).
Synetech

Начиная с его 4-й ревизии, я бы сказал, что он больше не делает этого предположения.
Йонас Гейдельберг

@ Джонас, ну ладно. Я не видел правок. Ну да ладно, он все равно получает новые голоса; Я думаю, в этом и заключается смысл функции редактирования.
Synetech

Я должен был зачислить вас в этой последней редакции - я сделаю это сейчас.
ChrisF

4

На самом деле я не могу предоставить вам доказательства, но я думаю: у каждого каталога есть список каталогов и файлов, которые он содержит. Чтобы сделать возможным использование относительных путей, каждому каталогу нужны эти два указателя - один на себя, .а другой - на уровень выше ..- эти два указателя создаются только во время создания самого каталога.

Так что отметка времени .. самом деле является не отметкой времени каталога выше, а отметкой времени указателя на каталог выше.


Это верно. ..Запись дается временная меткой текущей даты и времени , когда создаются в текущем каталоге.
Synetech
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.