Записи каталога .
и ..
являются артефактом начала 1970-х годов, когда UNIX работала на крошечных машинах, и код тоже должен был быть крошечным.
Таким образом, люди создали настоящие жесткие ссылки на каталоги с именами .
и ..
. Эта плохая идея приводит к тому, что счетчик жестких ссылок пустого каталога равен 2.
Сегодня это чепуха, а определение POSIX с 1988 года состоит в том, что эти записи не должны существовать. Их поведение просто нужно подражать. Это означает, что если .
или ..
появляются в имени пути, файловая система просто должна вести себя правильно.
Современные файловые системы не имеют записей .
или ..
в каталогах и не имеют счетчика жестких ссылок, равного 2, для пустого каталога.
ZFS реализована таким образом, но симулирует историческое поведение, чтобы избежать сбоя плохо написанных программ. Таким образом, ZFS поставляет .
и ..
с readdir()
, хотя этих записей не существует.
Независимо от того, используете ли вы современную файловую систему или историческую файловую систему, вы не можете удалить эти записи.
Теперь на счет вашей ссылки 2....
В исторической файловой системе ОС обычно считает, что каталог с количеством ссылок > 2 имеет вложенные -каталоги и поэтому не может быть удален.
Если количество ссылок в вашем каталоге не является результатом скрытого «каталога атрибутов» для перечисленных расширенных файлов атрибутов, это должно быть результатом ошибки в файловой системе.
Если ваша ОС не позволяет удалить этот каталог с помощью программы unlink
вместо rm
, будучи root
, вам нужно запустить fsck
.