Почему '.' выбран для представления текущего каталога и '..' для родительского каталога?

33

После прочтения этого вопроса Почему «~» было выбрано для представления домашнего каталога? Следующий очевидный вопрос, который у меня возник, был: «Почему?» и '..' использовался для представления текущего каталога и родительского каталога.

Это кажется таким интуитивным сейчас, но какая-то конкретная причина?

Manu
источник
10
Эти вопросы были заданы и ответ на SO
Стефан Chazelas

Ответы:

16

Я сомневаюсь, что вы найдете такой же интересный ответ, как и на вопрос тильды!

Меня там не было, но .. это как многоточие (...), которое имеет смысл в таких контекстах, как cd ../../../there. Кроме того, и особенно если смотреть на клавиатуру терминала из старого корпуса, там не так много подходящих символов для этой цели. Тебе тоже не нужно сдвигаться .. Это идеально.

Тот факт, что префикс точки используется для скрытых файлов, может быть другой причиной. Скрытые файлы не отображаются по умолчанию таких инструментов , как ls, поэтому ни один не по существу излишний .и ... Избыточный в том смысле, что нет смысла рассматривать их вместе с другими файлами - иначе они, безусловно, полезны.

Как оказалось, у меня это может быть задом наперед ... из википедии :

Понятию, что именам файлов предшествует «.» должно быть скрыто в результате программной ошибки в первые дни Unix. Когда особый "." и в каталог были добавлены записи каталога '..', и было решено, что команда ls не должна их отображать. Однако программа ls была ошибочно написана, чтобы исключить любой файл, имя которого начинается с «.», А не только файлы с именем «.» или '..'.

Это оказывается полезным при программировании; так как система включает. и .. в ответ на readdir()команды типа (и оболочки) игнорирование их и скрытых файлов может быть выполнено аналогичным образом.

Другое мнение об этой полезной ценности приведено в ссылке на цитату из Википедии. Конечно, вся история может быть апокрифической ... немного трудно поверить, что, например, Деннис Ричи решил, что проверка первого персонажа будет в порядке.

Я не согласен с автором, было бы лучше поместить скрытые файлы конфигурации в их собственный каталог, а не давать им универсальный префикс. Префикс является гораздо более гибким, позволяя использовать директивы внутри дерева, такие как .gitignoreи .htaccess. Обратите внимание, что файлы такого рода также появляются вместе при лексикографической сортировке, так что, возможно, это было сделано специально .

лютик золотистый
источник
3

В большинстве случаев тот же ответ, что и у @Panos на stackoverflow :

Короче говоря, он произошел от dи dd( dиректория и dиректория dиректория), которые были созданы пользователями вручную. dстала точка , и те , .и ..были созданы первые в mkdirполезности (УИП после соединения каталогов не больше не разрешается простым пользователем) , а затем с помощью mkdir системного вызова.

Выдержка из интервью с Кеном Томпсоном (1989-09-06):

МСМ : Но для пользователя это выглядело бы примерно так же, как иерархия каталогов.

Томпсон : нет, первым был генеральный директор. На самом деле, это даже не было ациклическим. Если вы понимаете файловую систему UNIX, это был .... был I-список, который является определением всех файлов в системе. А затем некоторые из этих файлов были каталогами, которые просто содержали имя и I-номер. Там нет ничего, что ограничивает его деревом. Так что это не было на самом деле, совсем не иерархично.

МСМ : Понятно.

Томпсон : И мы не ограничивали это деревом. Мы экспериментировали с различными топологиями. То, что мы в итоге сделали, превратилось в конкретное и вынудило топологии, которые фактически были топологиями, которые пришли по соглашению от этой системы. ... Каждый раз, когда мы создавали каталог, мы условно помещали его в другой каталог с именем directory - directory , который был dd. Его имя было dd и что все пользовательские каталоги и фактически большинство других каталогов, пользователи поддерживают свои собственные системы каталогов, имеют указатели обратно на dd, и dd был сокращен до точки-точкии dd был для каталога-каталога. Это было то место, куда вы могли попасть во все другие каталоги системы, чтобы поддерживать миску спагетти. Итак, я имею в виду этот туф в различных формах, что было строго условно в этой реализации DG, состоящей только из случайного набора каталогов и файлов, которые были вынуждены придерживаться типологии, которую мы поддерживали. Когда мы начали писать такие вещи, как проверка файловых систем, программы и прочее, блокирование каталогов спагетти и поиск несвязанных вещей, я имел в виду, что вы что-то разбираете и никогда не получите обратно, потому что знаете, что потеряли. Эти проблемы стали почти непреодолимыми, и в следующей реализации мы усилили типологию.

Стефан Шазелас
источник