Почему каталог / имеет .. и что это значит?

6

В каталоге / и используйте ls -a , результат будет содержать . и ..

Я могу понять существование . , который является указателем на сам каталог. В чем смысл наличия .. в каталоге / , пока нет родительского каталога для / ?

    
задан Fat Mind 12.06.2015 в 22:57
источник

2 ответа

7

Многие программные средства работают над предположениями, not на самом деле гарантируется им POSIX.1, но традиционно это относится к системам UNIX и закреплено во многих литературе UNIX, что (чтобы процитировать одну из таких частей UNIX литература):

Каждый каталог содержит имена файлов dot и dot-dot ( . и .. ), номера индексов которых относятся к каталогу и его родительскому каталогу соответственно. [...] Программа mkfs инициализирует файловую систему, так что . и .. корневого каталога имеют корневой индекс inode файловой системы. Морис Дж. Бах (1986). Дизайн операционной системы UNIX. Prentice Hall. п. 73

Например: старая функция getcwd() библиотеки (в системах, которые не поддерживали для нее специальную поддержку ядра) полагается на это знать, когда останавливать , отслеживая цепочку .. записей, когда составление текущего имени каталога. Он останавливается, когда он достигает директории, которая является ее собственным родителем, или не может пройти к .. .

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

POSIX.1 на самом деле не гарантирует, что корневой каталог имеет .. , просто указав, что программы должны учитывать возможность цикла, если есть .. в корневая директория. Это значит, что не-UNIX-системы также совместимы с POSIX. Существуют файловые системы, в которых отсутствие .. указывает, что каталог является корневым каталогом. И есть, как обсуждает сам Бах, системы, где есть корневой каталог выше , который POSIX.1 допускает при обсуждении абсолютных путей, начинающихся с двух слэшей (аналогично Конвенции об универсальном наименовании, используемой в локальных сетевых системах Microsoft).

Linux (и, следовательно, Ubuntu Linux), тем не менее, обеспечивает более строгие гарантии парадигмы UNIX.

    
ответ дан JdeBP 13.06.2015 в 16:08
источник
-1

Очень просто: с помощью каталога файлов ./ означает эту папку , а ../ означает , где файл (например, когда я в каталоге user/home/me/Desktop , то ../ приведет меня к /user/home/me ).

    
ответ дан Tzahi Leh 26.12.2015 в 11:32