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

13

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

Защита свидетелей ID 44583292
источник
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 ..производим одинаковый вывод.

ChrisF
источник
ответ на вопрос, отлично.
ppuschmann
Отредактировано, чтобы подчеркнуть вопрос относительно их появления в списке DIR.
Защита свидетелей ID 44583292
@mike - попытался ответить на пересмотренный вопрос, чтобы оправдать голоса;)
ChrisF
4
Это неправильно, потому что ..не дана метка времени родительского каталога, ему дана метка времени текущего каталога. Это потому, что .и ..оба создаются при создании каталога.
Synetech
@Synetech - Ах! Пенни падает
ChrisF
14

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

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

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

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

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

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

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

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