ओपी के प्रश्न का उल्लेख है mount --bind
। एक त्वरित जांच से पता चलता है कि यह उस निर्देशिका के लिए लिंक-गिनती को संशोधित नहीं करता है जो घुड़सवार है। हार्डलिंकिंग हमेशा लिंक-गिनती को संशोधित करता है, जिसे आप उपयोग करके देख सकते हैं ls -ld
।
आम तौर पर (अधिकांश यूनिक्स जैसी प्रणालियां), किसी निर्देशिका में हार्डलिंक की संख्या उस निर्देशिका से जुड़ी निर्देशिकाओं की संख्या होगी, जैसे,
".."
(मूल निर्देशिका)
"."
(खुद निर्देशिका)
- उपनिर्देशिका
यदि आप (आमतौर पर) अधिक जानकारीपूर्ण जानकारी पृष्ठ पढ़ते हैं , तो आपको पता चल सकता है कि अन्य लोगों ने क्या किया है:
Oh great, one spends hours tying to find what is wrong only to
discover,
$ info ln
On all existing implementations, you cannot make a hard link to a
directory, and hard links cannot cross filesystem boundaries. (These
restrictions are not mandated by POSIX, however.)
Therefore, kindly say everywhere you say super-user only,
instead say "few systems, super-user only".
हालांकि वर्तमान में यह शब्द है
अधिकांश सिस्टम एक निर्देशिका के लिए एक कड़ी बनाने पर रोक लगाते हैं; उन पर जहां इसे अनुमति दी जाती है, केवल सुपर-उपयोगकर्ता ऐसा कर सकता है (और सावधानी के साथ, क्योंकि एक चक्र बनाने से कई अन्य उपयोगिताओं के लिए समस्याएं पैदा होंगी)। हार्ड लिंक फाइल सिस्टम सीमाओं को पार नहीं कर सकते हैं। (हालांकि, ये प्रतिबंध POSIX द्वारा अनिवार्य नहीं हैं।)
निर्देशिका में हार्डलिंक बनाना (हटाना) किसी निर्देशिका के अनलिंक किए जाने पर फ़ाइलों को खोने से बचाने के लिए प्रतिबंधित सुविधा है। क्योंकि सी ऑपरेटिंग सिस्टम इंटरफ़ेस में लिंक / अनलिंक ऑपरेशन सममित हैं , निर्देशिकाओं को जोड़ने का काम आम तौर पर केवल mkdir / rmdir कॉल में किया जाता है।
ध्यान रखें कि 20-30 साल पहले GNU कोरुटिल का बहुत कुछ लिखा (और प्रलेखित) किया गया था, जब कुछ वास्तविक संग्रहालय के टुकड़े अभी भी उपयोग में थे। जैसा कि हार्ड लिंक के संबंध में बताया गया है , मूल रूप से वहाँ कोई mddir / rmdir कॉल नहीं थे ; हार्ड लिंक का उपयोग करके निर्देशिकाएं (एक विशेषाधिकार प्राप्त ऑपरेशन के रूप में) बनाई गई थीं। बताई गई समस्याओं को हल करने के लिए सिस्टम कॉल को जोड़ने पर वे सभी चले गए। लेकिन प्रलेखन उनके रखरखाव की स्मृति अतीत इन प्रणालियों को संदर्भित करने के लिए जारी है। विकल्प जो पूछताछ की थी पूर्ववर्ती में था fileutils
(जो के साथ संयुक्त किया गया था textutils
और shellutils
1990 के मध्य में के रूप में coreutils
)। चैंज से कुछ आइटम सुविधा की उत्पत्ति को स्पष्ट करने में मदद कर सकते हैं:
Mon Jul 23 16:57:44 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
* cp.c (copy): Make +update operate silently, like +one-file-system.
* ln.c: Add -F as synonym for -d, for SunOS compatibility.
Wed Feb 21 11:13:26 1990 David J. MacKenzie (djm at albert.ai.mit.edu)
* ln.c (error): New function.
(main, do_link): Call error instead of fprintf and exit.
(main): Recognize new -d +directory option to allow superuser to
make hard links to dirs, like the BSD ln -f option.
(do_link): Don't allow hard links to dirs (they are hard to
get rid of -- rmdir and unlink don't do it), unless -d was given.
(usage): Mention -d +directory option.
तो आप उदाहरण के लिए देख सकते हैं कि इस सुविधा के लिए प्राचीन वस्तुओं में से एक SunOS था। इसी मैनुअल पेज ने यह कहा:
OPTIONS
-f Force a hard link to a directory -- this option is only avail-
able to the super-user.
-s Create a symbolic link or links.
SYSTEM V OPTIONS
-f Force files to be linked without displaying permissions, asking
questions or reporting errors.
-F Force a hard link to a directory -- this option is only avail-
able to the super-user.
-s Create a symbolic link or links.
जैसा कि दस्तावेज़ीकरण में उल्लेख किया गया है, यह सुविधा (और संबंधित विकल्प POSIX में नहीं है (और देखें कि राशन अनुभाग बताता है कि क्यों)। बल्कि, फीचर को एक नए कमांड में ले जाया गया था (जिसे GNU कोर्यूटिल्स द्वारा भी प्रदान किया गया है) link
का वर्णन। कमांड स्वयं अस्पष्ट है; आपको मानक से किसी भी उपयोग को प्राप्त करने के लिए फ़ंक्शन कॉल का विवरण पढ़ना होगा । हालांकि, मानक उन शर्तों को स्पष्ट नहीं करता है जिनमें कमांड काम करेगा, एक तरफ से आवश्यक विशेषाधिकारों के बारे में अस्वीकरण को आगे बढ़ाने से अलग है। उसके लिए, आपको मानक के बाहर सिस्टम-निर्भर सुविधाओं पर जाना होगा:
एक निर्देशिका को जोड़ना अधिकांश ऐतिहासिक कार्यान्वयन में सुपरयुसर तक सीमित है क्योंकि यह क्षमता फ़ाइल पदानुक्रम में लूप का उत्पादन कर सकती है या अन्यथा फ़ाइल सिस्टम को दूषित कर सकती है। POSIX.1-2008 की यह मात्रा निषिद्ध है link()
और unlink()
ऐसा करने से। अन्य कार्य इसे कर सकते हैं यदि कार्यान्वयनकर्ता ने इस तरह के विस्तार को डिजाइन किया है।
वहाँ रहे हैं प्रणाली है जो सामान्य संख्या (2 प्लस उपनिर्देशिका) परे निर्देशिका के लिए hardlinks का उपयोग करें।
OSX साधारण फ़ाइलों के लिए निर्देशिकाओं के लिए कई हार्डलिंक का उपयोग करता है । यह इसका उपयोग करके समर्थन नहीं करता है ln
( मैनुअल पेज देखें )। हाउ टाइम मशीन अपने जादू के अनुसार काम करता है, यह टाइम मशीन बैकअप सुविधा के लिए उपयोग किए जाने वाले संस्करणों को प्रदान करने के लिए करता है।
आगे की पढाई: