ฉันใช้ Ubuntu 12.04 เมื่อฉันพยายามสร้างฮาร์ดลิงก์สำหรับไดเรกทอรีใด ๆ มันจะล้มเหลว ฉันสามารถสร้างฮาร์ดลิงก์สำหรับไฟล์ที่อยู่ภายในขอบเขตของระบบไฟล์ ฉันรู้เหตุผลว่าทำไมเราไม่สามารถสร้างฮาร์ดลิงก์สำหรับไฟล์ที่นอกเหนือจากระบบไฟล์
ฉันลองคำสั่งเหล่านี้:
$ ln /Some/Direcoty /home/nischay/Hard-Directory
hard link not allowed for directory
$ sudo ln /Some/Direcoty /home/nischay/Hard-Directory
[sudo] password for nischay:
hard link not allowed for directory
ฉันแค่ต้องการทราบเหตุผลที่อยู่เบื้องหลังนี้ มันเหมือนกันสำหรับ GNU / Linux distros และ Unix flavor ทั้งหมด (BSD, Solaris, HP-UX, IBM AIX) หรือเฉพาะใน Ubuntu หรือ Linux เท่านั้น
ln -F <src> <dst>
และอาจใช้งานได้ แน่นอนว่ามันใช้งานได้กับ superuser ใน Unix เวอร์ชั่นเก่ากว่า ไม่มีใครจำได้ว่าเป็น UCB หรือ System V หรือไม่ ใช่สิ่งเลวร้ายอาจเกิดขึ้นได้ แต่โดยปกติจะไม่ ดังที่ฉันจำได้rmdir
ว่ารู้ว่าจะไม่ทำการลบฮาร์ดลิงก์ต่อไป อย่างไรก็ตามผู้ใช้อาจสับสนและลบสิ่งที่ผิดพลาด
rmdir
จัดการกับฮาร์ดลิงก์ได้อย่างพิเศษได้อย่างไร? ฮาร์ดลิงก์เป็นเพียงลิงค์ปกติ แต่เป็นลิงค์เพิ่มเติม ไม่ง่ายเลยที่จะทราบว่ามีลิงก์พิเศษที่ผิดปกติอยู่หรือไม่โดยไม่ต้องมีการบันทึกเพิ่มเติม
rmdir
สามารถบอกได้ว่าไดเรกทอรีมีลิงค์จากที่อื่นหรือไม่ การลบแบบเรียกซ้ำrm -r
จะต้องเขียนด้วยความระมัดระวังเพื่อให้แน่ใจว่ามันจะทำงานได้อย่างถูกต้องแม้ว่าจะมีข้อผิดพลาดเช่น "สิทธิ์ถูกปฏิเสธ" BTW, UCB = BSD, doh!
ln -F
ไดเรกทอรีและใช้งานได้แล้ว แต่คุณไม่กล้าลบไดเรกทอรีหลังจากนั้นเพราะกลัวว่าจะทำให้ระบบไฟล์เสียหาย