जब हम "vi" संपादक में संपादन करते हैं तो इनोड मूल्य क्यों बदल जाता है?


22

जब मैं "vi" संपादक में एक फ़ाइल को संपादित करता हूं तो फ़ाइल का इनोड मूल्य बदल रहा है। लेकिन जब बिल्ली कमांड के साथ संपादित किया जाता है तो इनोड वैल्यू नहीं बदलती है।

जवाबों:


18

सबसे अधिक संभावना है, तो आप निर्धारित किया है बैकअप पर विकल्प, और backupcopy "नहीं" या "breakhardlink" करने के लिए।


कैसे उस विकल्प को हटाने के लिए
स्मारक

2
@monu, अपना संपादन करें ~/.vimrc। वे डिफ़ॉल्ट सेटिंग्स नहीं हैं।
cjm

विम 7.4 के साथ @cjm, मुझे कोई स्ट्रिंग था backupमेरे में .vimrcहै, लेकिन अभी भी inode बदल रहा था, क्योंकि डिफ़ॉल्ट करने के लिए है बैकअप वर्तमान फ़ाइल, बाद में नष्ट कर दिया और करने के लिए / * जब भी संभव हो * / फ़ाइल का नाम बदलें / * बैकअप * / और लिखने के लिए नया नाम / * एक ही नाम के तहत, प्रभावी रूप से इनोड को बदलकर * / । जोड़कर हल set backupcopy=yesकरने के लिए .vimrc
किरिल ब्यूलगिन

27

जब आप किसी फ़ाइल को संशोधित करना चाहते हैं, तो आपके पास दो विकल्प होते हैं, प्रत्येक इसके लाभ और कमियां।

  • आप जगह में फ़ाइल को अधिलेखित कर सकते हैं। यह किसी भी अतिरिक्त स्थान का उपयोग नहीं करता है, और मौजूदा फ़ाइल की सामग्री से परे कड़ी, अनुमतियों और किसी भी अन्य विशेषता का संरक्षण करता है। ऐसा करने का मुख्य दोष यह है कि यदि फ़ाइल लिखे जाने के दौरान कुछ भी होता है (एप्लिकेशन क्रैश हो जाता है, या पावर बाहर निकल जाती है), तो आप आंशिक रूप से लिखित फ़ाइल के साथ समाप्त होते हैं।
  • आप फ़ाइल के नए संस्करण को एक अलग नाम के साथ एक नई फ़ाइल में लिख सकते हैं, फिर इसे जगह में स्थानांतरित कर सकते हैं। यह अधिक स्थान का उपयोग करता है और हार्ड लिंक को तोड़ता है, और यदि आपके पास किसी फ़ाइल पर अनुमतियाँ हैं, लेकिन उस निर्देशिका में नहीं है, जिसमें आप ऐसा नहीं कर सकते हैं। दूसरी तरफ, फ़ाइल के पुराने संस्करण को नए संस्करण से अलग कर दिया जाता है, इसलिए हर समय फ़ाइल का नाम फ़ाइल के मान्य, पूर्ण संस्करण की ओर इंगित करता है।

उन्नत संपादक जैसे Vim या Emacs दोनों विधियों के बीच चयन कर सकते हैं। जब वे पहली विधि का उपयोग करते हैं, तो वे सामान्य रूप से पहले एक बैकअप फ़ाइल बनाते हैं, जिसे यदि नई फ़ाइल सामग्री को सही तरीके से नहीं लिखा जा सकता है, तो उसे पुनर्प्राप्त किया जा सकता है।

शास्त्रीय vi जगह में फ़ाइल को अधिलेखित करता है। तो इनोड अपरिवर्तित है।

विम में, के रूप में मुख्य न्यायिक मजिस्ट्रेट को पहले से ही कहा है , चुनाव के नियंत्रण में है backup, backupcopyऔर writebackupविकल्प। डिफ़ॉल्ट रूप से, विम पुरानी फ़ाइल का नाम बदल देता है, फिर मूल नाम के साथ एक नई फ़ाइल लिखता है, अगर यह सोचता है कि यह मूल फ़ाइल की विशेषताओं को फिर से बना सकता है। यदि आप मौजूदा इनोड का पुन: उपयोग करना चाहते हैं (और इसलिए डेटा खोने का जोखिम है, या बैकअप कॉपी बनाने में अधिक समय बर्बाद करना है), तो set backupcopy yesअपने में जोड़ें .vimrc


+1 उल्लेख के लिए writebackupक्योंकि मैं पहले से ही बंद कर दिया backupऔर backupcopyलेकिन inode अभी भी बदल रहा था।
अलीरज़ा मोहम्मदी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.