ไฟล์ใด ๆ บนระบบไฟล์ UNIX ที่ออกแบบตามหลักการซึ่งมีจำนวนการอ้างอิง (เช่นผลรวมของจำนวน hardlink และจำนวนของการเปิดไฟล์ที่จับ *) ถึง 0 จะถูกลบออก อย่างไรก็ตามสำหรับระบบ UNIX ที่ทันสมัยการrmdir
เรียกของระบบจะลบไดเร็กทอรีว่างในการดำเนินการครั้งเดียวแทนที่จะลบ.
และ..
ทีละหนึ่ง
ในระบบ UNIX ที่ผ่านมาอย่างไรก็ตามการเรียกระบบนี้ไม่มีอยู่ แต่rmdir
คำสั่งคือโปรแกรม setuid ( สามารถพบซอร์สโค้ดได้ที่นี่ ) ซึ่งตรวจสอบว่าไดเรกทอรีนั้นว่างเปล่า (นอกเหนือจากรายการพิเศษ) จากนั้นลบออก..
และ.
ตามลำดับจากนั้นจึงลบไดเรกทอรีเองทั้งหมดด้วยunlink
การเรียกระบบที่รูทเท่านั้นที่ได้รับอนุญาตให้ใช้ในไดเรกทอรี (ดังนั้นทำไมคำสั่งถูกตั้งค่า) ดังนั้นในระบบเหล่านั้นการนับลิงก์ของไดเรกทอรีจะเป็น 1 หลังจากนั้น.
ถูกลบออก แต่ก่อนที่ไดเรกทอรีจะถูกลบออกจากไดเรกทอรีหลักดังนั้นมันจะเป็น 0
rm
คำสั่งบังเอิญป้องกันไม่ให้รากแม้จะมาจากการลบไดเรกทอรี และrm -r
จะเรียกใช้rmdir
คำสั่งเพื่อลบไดเรกทอรีหลังจากล้างเนื้อหา
ในระบบที่ผ่านมาเหล่านี้การunlink
โทรจากโปรแกรมที่เรียกใช้ในฐานะรูทผิดพลาดทำให้เกิดการแย่งชิงกับrmdir
หรือmv
หรือสร้างไฟล์ในกระบวนการที่มีการลบไดเรกทอรีปัจจุบัน (ระบบที่ทันสมัยป้องกันการนี้) อาจส่งผลให้ ซึ่งมีจำนวนฮาร์ดลิงค์มากกว่า 0 แต่ไม่มีอยู่ในแผนผังไดเรกทอรี เงื่อนไขนี้ถูกตรวจพบโดยdcheck
และยังคงเป็นหนึ่งในการเช็คอินfsck
เนื่องจากยังคงมีความเป็นไปได้ทางกายภาพในระบบไฟล์ส่วนใหญ่
ระบบไฟล์นั้นโดยบังเอิญไม่จำเป็นต้องใช้ไดเรกทอรี (รวมถึง.
และ..
) เป็นไฟล์ปกติที่มีฮาร์ดลิงก์ ในระบบไฟล์เหล่านี้จำนวน hardlink ของไดเรกทอรีจะถูกรายงานเป็นเสมอ0
(แต่แน่นอนว่ามันมีอยู่ภายในไดเรกทอรีหลักนั้นมีคุณสมบัติสำหรับ "จำนวนการอ้างอิง" ของ 1)
พฤติกรรมของไดเรกทอรีที่ถูกลบ (เช่นเมื่อตรวจสอบโดยกระบวนการที่เปิดอยู่แล้วหรือเป็นไดเรกทอรีปัจจุบัน) และความหมายที่แน่นอนของ "จำนวนลิงค์" ของไดเรกทอรีนั้นไม่ได้ระบุ ตัวอย่างเช่นบน Mac OS X จะรายงานจำนวนฮาร์ดลิงก์ 2ถึงแม้ว่าจะไม่มีฮาร์ดลิงก์จริง แม้ว่า.
และ..
ไม่ปรากฏในรายชื่อไดเรกทอรีสามารถเปิดและstat
อาจจะเรียกว่ามีชื่อหรือ.
..
บน Linux นับการเชื่อมโยงเป็น 0 แต่.
และ..
เช่นเดียวกันยังคงทำงาน
Mac OS X ยังรายงานจำนวนไฟล์ทั้งหมดในไดเรกทอรีเป็นจำนวนลิงค์แทนที่จะเป็นเพียงจำนวนไดเรกทอรีย่อย แต่มันเป็น 2 แม้กระทั่งเมื่อ.
และ..
ไป
* ซึ่งรวมถึงตัวอธิบายแบบเปิดปกติส่วนหน่วยความจำที่แมป (รวมถึงเช่นการเรียกใช้ไบนารีและไลบรารีที่แชร์) และประมวลผลไดเรกทอรีปัจจุบัน
..
เฉพาะเมื่อมีไดเรกทอรีย่อยใช่ไหม ดังนั้น..
จะไม่ปรากฏสำหรับไดเรกทอรีใช่มั้ย