Сколько записей создается при создании нового каталога в * nix?

В связи с вопросом, я думаю, что mkdir ~/a либо два, либо три:

  • 1 для каталога, в котором он находится ( ~/a )
  • 1 для себя ( cd a && ls . )
  • и / или 1 запись для себя снова ( cd a && ls .. )

Может ли кто-нибудь уточнить, если это два или три?

  • Минимальное сжатие Squashfs?
  • В чем разница между путём и каталогом?
  • Я хочу изменить корневые файлы, а также создавать файлы без root в одном сеансе текстового редактора.
  • Как остановить автоматический монтаж устройств в Ubuntu?
  • Возврат последнего записанного файла, содержащий определенную подстроку в имени файла?
  • Символическая ссылка для моего пользователя, не работает для root
  • Какие причины / dev / disk / by-label заполняются?
  • Края в операциях файловой системы во время резервного копирования и копирования файлов
  • 2 Solutions collect form web for “Сколько записей создается при создании нового каталога в * nix?”

    В пустом каталоге:

     % stat . File: `.' Size: 6 Blocks: 0 IO Block: 4096 directory Device: fe04h/65028d Inode: 537317737 Links: 2 Access: (0750/drwxr-x---) Uid: ( 1000/stribika) Gid: ( 100/ users) Access: 2011-02-22 08:47:20.935036074 +0100 Modify: 2011-02-22 08:47:20.935036074 +0100 Change: 2011-02-22 08:47:20.935036074 +0100 Birth: - % mkdir foo % stat . File: `.' Size: 16 Blocks: 0 IO Block: 4096 directory Device: fe04h/65028d Inode: 537317737 Links: 3 Access: (0750/drwxr-x---) Uid: ( 1000/stribika) Gid: ( 100/ users) Access: 2011-02-22 08:47:20.935036074 +0100 Modify: 2011-02-22 08:47:57.465036072 +0100 Change: 2011-02-22 08:47:57.465036072 +0100 Birth: - % stat foo File: `foo' Size: 6 Blocks: 0 IO Block: 4096 directory Device: fe04h/65028d Inode: 509269 Links: 2 Access: (0750/drwxr-x---) Uid: ( 1000/stribika) Gid: ( 100/ users) Access: 2011-02-22 08:47:57.465036072 +0100 Modify: 2011-02-22 08:47:57.465036072 +0100 Change: 2011-02-22 08:47:57.465036072 +0100 Birth: - 

    Как видите, есть 2 ссылки на пустой каталог. Когда я создаю новый внутри, количество ссылок увеличивается до 3. Кроме того, есть 2 ссылки на новый каталог. Всего 3 новых ссылки.

    Это связано с тем, что каждый каталог имеет ссылку на себя (.) И его родительский (..).

    В исходной реализации Unix, чтобы сохранить код файловой системы внутри ядра простым, программы обработки каталогов сделали некоторую дополнительную работу: в частности, mkdir /parent/a создал запись для in /parent , а также вызванную запись . в a (указывая на себя) и запись, которая называется .. в a (указывая на /parent ¹).

    Довольно скоро код для mkdir и друзей все равно переместился в ядро, но формат файловой системы оставался явным . и .. записи, которые код обхода файловой системы найден по имени (в отличие от наличия двух указателей специального формата в каждом каталоге).

    В настоящее время некоторые (большинство?) Файловых систем подделывают его: каталогов на самом деле нет . и .. записи на диске, они генерируются драйвером. Однако, с точки зрения пользователя, это прозрачно. Количество ссылок в каталоге по-прежнему равно двум плюс число подкаталогов (запись в родительском, собственный каталог и каждый подкаталог .. ). В частности, пустой каталог имеет счетчик ссылок из двух (т. Е. Есть две записи в файловой системе, указывающие на него), но при создании создается три записи (третий – это .. который указывает на родителя).

    ¹ По ссылке не по имени. Поэтому, если вы переименовываете /parent , a продолжает указывать на родительский каталог, где бы он ни перемещался в структуру файловой системы.

    Linux и Unix - лучшая ОС в мире.