Когда бы "." и ".." записи в каталоге dir отличаются? (Я понимаю, что они представляют два разных каталога, но они всегда перечисляют одинаково с одной и той же датой и временем в команде dir по умолчанию. Они когда-либо различаются?)
13
Ответы:
Что касается фактического перечисления:
Они используют дату текущего каталога для обоих. Если вы начнете
C:\Users\Chris
(скажем), вы можете получить выше. Но когда вы поднимаетесь наверх,C:\Users
вы получаете:Таким образом, дата
..
в первом случае не совпадает с датой.
во втором. Что, очевидно, неправильно, поскольку они (или должны быть) в одном каталоге. Однако.
и..
являются ссылками на текущий и родительский каталог и оба создаются одновременно - когда каталог был создан - так что это действительно правильно (спасибо Synetech inc за указание на это)Единственное время, когда временные метки будут другими, - это если один или другой из
.
или..
были воссозданы.Оригинальный ответ:
.
означает текущий каталог...
означает родительский каталог.Так что в обычных условиях они всегда разные.
Единственный раз, когда они дают тот же результат, когда вы находитесь в корне диска. Так что
C:\>
dir .
иdir ..
производим одинаковый вывод.источник
..
не дана метка времени родительского каталога, ему дана метка времени текущего каталога. Это потому, что.
и..
оба создаются при создании каталога.Нет, они всегда будут одинаковыми. Поскольку это каталоги, а не файлы, они обрабатываются немного по-другому (на самом деле, они даже не являются обычными каталогами, они являются указателями, как сказал eL01, поэтому они обрабатываются даже более по-другому, чем обычные каталоги).
Когда вы создаете каталог, автоматически создаются две записи:
.
указывает на вновь созданный каталог..
указывает на родителя нового каталогаОчевидно,
.
будет иметь текущую дату и время создания каталога, и, хотя может показаться логичным, что метка времени родительского каталога будет скопирована..
, это не так. Когда вы создаете новый каталог, оба указателя получают текущую дату и время. Это относится к DOS и Windows 7 на FAT * и NTFS.источник
..
будет метка времени родителя. (Я не удивлюсь, если когда-нибудь новая файловая система - WinFS? - наконец сделает это таким образом).На самом деле я не могу предоставить вам доказательства, но я думаю: у каждого каталога есть список каталогов и файлов, которые он содержит. Чтобы сделать возможным использование относительных путей, каждому каталогу нужны эти два указателя - один на себя,
.
а другой - на уровень выше..
- эти два указателя создаются только во время создания самого каталога.Так что отметка времени
..
самом деле является не отметкой времени каталога выше, а отметкой времени указателя на каталог выше.источник
..
Запись дается временная меткой текущей даты и времени , когда создаются в текущем каталоге.