मैं हार्डलिंक्स की धारणा को अच्छी तरह से समझता हूं, और cp
--- और यहां तक कि हाल ही में POSIX चश्मा --- जैसे कई बार बुनियादी उपकरणों के लिए मैन पेज पढ़ चुका हूं । फिर भी मैं निम्नलिखित व्यवहार का पालन करने के लिए आश्चर्यचकित था:
$ echo john > john
$ cp -l john paul
$ echo george > george
इस बिंदु पर john
और paul
एक ही इनोड (और सामग्री) george
होगा , और दोनों मामलों में अलग-अलग होगा। अब हम करते हैं:
$ cp george paul
इस बिंदु पर मुझे उम्मीद थी george
और paul
अलग-अलग इनोड संख्याएं थीं लेकिन एक ही सामग्री --- यह अपेक्षा पूरी हो गई थी --- लेकिन मुझे यह भी उम्मीद थी paul
कि अब से एक अलग इनोड संख्या है john
, और john
अभी भी सामग्री है john
। यह वह जगह है जहां मैं हैरान था। यह पता चलता है कि गंतव्य पथ पर किसी फ़ाइल की प्रतिलिपि बनाने paul
से अन्य सभी गंतव्य पथों पर उसी फ़ाइल (समान इनोड) को स्थापित करने का परिणाम होता है, जो इनोड को साझा paul
करता है। मैं सोच रहा था कि cp
एक नई फ़ाइल बनाता है और इसे पुरानी फ़ाइल के कब्जे वाले स्थान पर ले जाता है paul
। इसके बजाय ऐसा लगता है कि मौजूदा फ़ाइल को खोलना है paul
, उसे छोटा करना है, और लिखना हैgeorge
उस मौजूदा फ़ाइल में सामग्री। इसलिए एक ही "इनोड" वाली किसी भी अन्य "फाइल" को उसी समय अपडेट किया जाता है।
ठीक है, यह एक व्यवस्थित व्यवहार है और अब जब मैं यह उम्मीद करना जानता हूं कि मैं यह पता लगा सकता हूं कि इसके आसपास कैसे काम किया जाए, या उचित तरीके से इसका लाभ उठाएं। मुझे ऐसी कौन सी पहेलियाँ हैं जहाँ मुझे इस व्यवहार को देखना चाहिए था? मुझे आश्चर्य होगा कि अगर यह दस्तावेजों में कहीं दस्तावेज नहीं है तो मैंने पहले ही देख लिया है। लेकिन जाहिरा तौर पर मैं इसे याद किया, और अब एक स्रोत नहीं मिल सकता है जो इस व्यवहार पर चर्चा करता है।