मैं हार्डलिंक्स की धारणा को अच्छी तरह से समझता हूं, और 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उस मौजूदा फ़ाइल में सामग्री। इसलिए एक ही "इनोड" वाली किसी भी अन्य "फाइल" को उसी समय अपडेट किया जाता है।
ठीक है, यह एक व्यवस्थित व्यवहार है और अब जब मैं यह उम्मीद करना जानता हूं कि मैं यह पता लगा सकता हूं कि इसके आसपास कैसे काम किया जाए, या उचित तरीके से इसका लाभ उठाएं। मुझे ऐसी कौन सी पहेलियाँ हैं जहाँ मुझे इस व्यवहार को देखना चाहिए था? मुझे आश्चर्य होगा कि अगर यह दस्तावेजों में कहीं दस्तावेज नहीं है तो मैंने पहले ही देख लिया है। लेकिन जाहिरा तौर पर मैं इसे याद किया, और अब एक स्रोत नहीं मिल सकता है जो इस व्यवहार पर चर्चा करता है।