Видаляється будь-який файл із звичайно розробленої файлової системи UNIX, кількість посилань (наприклад, кількість кількості жорстких посилань та кількість відкритих файлів *) дорівнює 0. Однак у сучасних системах UNIX rmdirсистемний виклик видаляє порожній каталог за одну операцію, а не видалення .та ..один за одним.
Однак в історичних системах UNIX цього системного виклику не існувало. Замість цього rmdir команда була встановленою програмою ( вихідний код можна знайти тут ), яка перевірила, що каталог порожній (окрім спеціальних записів), а потім видалено ..та ., у цьому порядку, а потім видалено сам каталог, все з unlinkсистемний виклик, котрий тільки корінь дозволено використовувати в каталогах (звідси чому команда була встановлена). Отже, у цих системах кількість посилань каталогів на мить буде 1 після .видалення, але перед тим, як каталог був видалений з батьківського каталогу, тоді це було б 0.
rmКоманда, до речі, запобігти навіть корінь від видалення каталогів. І rm -rзакликає rmdirкоманду видалити каталоги після випорожнення їх вмісту.
У цих історичних системах неправильне використання unlinkвиклику програми, що працює під керуванням root, запускається в стан перегонів з rmdirабо mv, або створення файлу в процесі, поточний каталог якого було видалено (сучасні системи запобігають цьому), може призвести до вивішування файлів чи каталогів які мають число твердих посилань вище 0, але не існують у дереві каталогів. Цей стан було виявлено dcheckі досі є однією з перевірок, fsckоскільки він залишається фізично можливим у більшості файлових систем.
Файлові системи, до речі, не вимагають реалізації каталогів (включаючи .і ..) як звичайні файли, що мають жорсткі посилання. У цих файлових системах кількість твердих 0посилань каталогів завжди буде повідомлятися як (але, звичайно, його існування в батьківському каталозі кваліфікується як "кількість посилань" 1).
Поведінка вилученого каталогу (наприклад, коли він перевіряється процесом, який він уже відкрив, або має його як поточний каталог) та точне значення "кількості посилань" каталогу не визначено. Наприклад, на Mac OS X він повідомляє про кількість посилань на 2 , хоча у нього немає справжніх посилань. Навіть якщо .і ..не з'являється в списку, каталог може бути відкритий і statможе бути викликаний з ім'ям .або ... У Linux, лічильник посилань дорівнює 0 , але .і ..також по- , як і раніше працюють.
Mac OS X також повідомляє про кількість всіх файлів у каталозі як кількість посилань, а не лише кількість підкаталогів. Але це 2 навіть коли .і ..пішли.
* Сюди входять звичайні відкриті дескриптори, розділи з картографічною пам'яттю (включаючи, наприклад, виконання бінарних файлів та спільних бібліотек) та обробку поточних каталогів.
.., лише коли він має підкаталог, правильно? Тож..не завжди присутній для каталогу, правда?