नहीं, एक कड़ी पूरी तरह से अलग है। एक नरम लिंक विंडोज शॉर्टकट के करीब है (हालांकि महत्वपूर्ण अंतर हैं, प्रतीकात्मक लिंक हार्ड लिंक की तुलना में विंडोज़ शॉर्टकट के समान हैं)। एक कड़ी एक अलग चीज है और एक जिसकी आपको लगभग कभी आवश्यकता नहीं होगी।
संक्षेप में, इस कमांड के साथ एक सॉफ्ट लिंक बनाया गया है:
ln -s foo bar
यदि आप दौड़ते हैं ls -l
, तो आप देखेंगे:
lrwxrwxrwx 1 terdon terdon 3 Mar 10 15:58 bar -> foo
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
इसका ->
मतलब है कि bar
एक लिंक है foo
। इसलिए, bar
उदाहरण के लिए पाठ संपादक के साथ खोलना , वास्तव में अलग फाइल को खोल देगा foo
। हालांकि, डिलीट bar
करने से शॉर्टकट डिलीट हो जाएगा, यह फाइल को प्रभावित नहीं करेगा foo
।
दूसरी ओर, हार्ड लिंक इस कमांड के साथ बनाए गए हैं:
ln foo bar
यदि आप अब चलाते हैं ls -l
, तो फ़ाइलों के बीच किसी भी संबंध का कोई संकेत नहीं है:
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 bar
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
लेकिन - और यह बहुत महत्वपूर्ण है - वे वास्तव में एक ही फ़ाइल हैं । यूनिक्स फ़ाइल सिस्टम पर फाइलें इनोड का उपयोग करके संग्रहीत की जाती हैं ; एक इनकोड मूल रूप से फाइलसिस्टम भौतिक हार्ड ड्राइव पर किसी विशेष स्थान पर एक फ़ाइल नाम को मैप करता है। तो, हार्ड लिंक ऐसी फाइलें हैं जो उनके लक्ष्य के समान इनकोड को इंगित करती हैं । इसे लगाने का एक और तरीका है कि सभी फाइलें वास्तव में हार्ड लिंक हैं जो उनके इनोड्स की ओर इशारा करती हैं। एक फ़ाइल के लिए एक कड़ी बनाना बस फ़ाइल सिस्टम पर एक नया पॉइंटर (फ़ाइल) बनाता है जो उसी इनोड को इंगित करता है। प्रत्येक इनोड में एक या एक या किसी की ओर इशारा करते हुए कई फाइलें हो सकती हैं।
इसे और अधिक स्पष्ट रूप से समझने के लिए, ls -i
एक फाइल से जुड़े इनोड को दिखाता है। आइए एक नरम लिंक और एक कड़ी बनाएं और देखें कि क्या होता है:
ln -s foo SoftLinkToFoo
ln foo HardLinkToFoo
अब, उनके आयतों की जाँच करें:
आप ऊपर देख सकते हैं, दोनों foo
और HardLinkToFoo
एक ही inode (16648029) जबकि SoftLinkToFoo एक अलग से एक (16648036) है है।
अगर हम नाम बदलने पर क्या होता है foo
के साथ mv foo bar
?
लाल रंग एक टूटे हुए नरम लिंक को इंगित करता है, जिसका लक्ष्य अब नहीं मिल सकता है। ऐसा इसलिए है क्योंकि सॉफ्ट लिंक किसी फ़ाइल के नाम की ओर इशारा करते हैं, न कि उसके इनोड के। ध्यान दें कि नाम बदलने के बावजूद, इनोड वही रहता है इसलिए हार्डलिंक ठीक है, यह अभी भी काम करता है।
सारांश में, हार्ड लिंक वास्तव में एक ही फ़ाइल की दो अभिव्यक्तियाँ हैं ; वे डिस्क के एक ही खंड के संकेत हैं। सॉफ्ट लिंक सिर्फ शॉर्टकट हैं। एक वास्तविक दुनिया सादृश्य लेने के लिए, हार्डलिंक एक ही फोन लाइन के लिए दो अलग-अलग फोन नंबर की तरह होते हैं और सॉफ्ट लिंक एक ही घर में दो अलग-अलग फोन लाइन होने की तरह होते हैं।