कैसे linux एक चाल कमांड को संभालता है


12

हुड के नीचे एक चाल कमांड को लिनक्स कैसे संभालता है?

मान लीजिए कि मैं अपने घर से निकलता हूं

/home/me

और मैं इसे एक और निर्देशिका में स्थानांतरित करता हूं

/home/foo/me

सभी फाइलें और निर्देशिका पथ कैसे meबदले जा रहे हैं? मुझे पता है कि मेरी Desktopडीआईआर meअब /home/foo/me/Desktopसाथ ही साथ है Documents /home/foo/me/Documentsलेकिन क्या meपरिवर्तन को प्रतिबिंबित करने के लिए फाइल सिस्टम स्पष्ट रूप से हर पथ को अपडेट करता है? यह बहुत कुशल नहीं लगता है और यह शायद नहीं है।

मुझे इस पर और जानकारी कहां से मिल सकती है?


5
दक्षता के बारे में: नहीं, यह कुशल नहीं होगा। जब आप डेटा को किसी अन्य निर्देशिका में ले जाते हैं, तो डेटा वास्तव में एक स्थान पर पढ़ा नहीं जाता है और दूसरे में लिखा जाता है। एक फाइल सिस्टम में डेटा के ब्लॉक के लिए पॉइंटर्स का एक सेट होता है। एक चाल के मामले में, बस संकेत अपडेट किए जाते हैं।
जोस

आह, शायद यही जेफ का मतलब है ...
जैकब व्लिजम

@ जोस जहां विखंडन सही से आता है?
शून्य २

3
@ जीरो 298 नहीं, विखंडन आम तौर पर एक पूरी तरह से अलग और असंबंधित आइस है - विखंडन फ़ोल्डर संरचना की सामग्री के बारे में नहीं है, लेकिन भौतिक डिस्क प्लैटर्स में एक एकल फ़ाइल की सामग्री के बिखरने के बजाय (एकल निरंतर रेखा होने के कारण), पढ़ने को कम करना / ऐसी फ़ाइलों का प्रदर्शन लिखें। बड़े / गहरे / शाखावार फ़ोल्डर वाले पेड़ों की सामग्री आमतौर पर निरंतर होने की उम्मीद नहीं की जाती है और इस तरह से चारों ओर चला जाता है।
पीटरिस

जवाबों:


21

यह समझने के लिए कि यह फ़ोल्डर्स को कैसे स्थानांतरित करता है आपको लिनक्स के तहत फ़ाइल सिस्टम के बारे में थोड़ा समझने की आवश्यकता हो सकती है। प्रत्येक फ़ाइलों और फ़ोल्डरों को एक " इनोड " नामक डेटा संरचना के भाग के रूप में संग्रहीत किया जाता है । प्रत्येक फ़ाइल में एक इनकोड संख्या होती है, इसलिए फ़ोल्डर।

अपने फ़ोल्डर के इनकोड को देखने के लिए, कमांड का उपयोग करें ls -ial foldername। पहला कॉलम फाइल का इनकोड नंबर दिखाता है। प्रत्येक फ़ोल्डर के लिए दो अद्वितीय नाम हैं .और .., क्रमशः अपनी स्वयं की निर्देशिका का प्रतिनिधित्व करते हैं, और मूल निर्देशिका।

आप किसी निर्देशिका (जैसे / होम / मी / सोर्स) को उप-निर्देशिकाओं और फाइलों को दूसरी निर्देशिका (जैसे / होम / मी / कहीं / और) में स्थानांतरित करने के लिए एक प्रयोग करने की कोशिश कर सकते हैं। / घर / मेरे / स्रोत और इसकी सभी सामग्री की इनकोड संख्या आगे बढ़ने से पहले और बाद में समान रहती है। अंतर केवल इनोड संख्या का है .., जो मूल रूप से / होम / मी की आईनोड संख्या साझा करता है और अब / होम / मी / कहीं और / का इनकोड नंबर बन जाता है। सरल शब्दों में, लिनक्स निर्देशिका स्रोत से लिंक को अपडेट करता है और फिर यह किया जाता है।

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


3
ठीक है, जब तक यह कदम फाइलसिस्टम सीमाओं को पार नहीं करता है।
कोजिरो

3

यदि आप इस तरह के कार्यक्रमों mvऔर cpकाम के बारे में रुचि रखते हैं, तो याद रखें कि वे खुले स्रोत हैं और आप कोड के माध्यम से पढ़कर सबसे सटीक विवरण प्राप्त कर सकते हैं। यहाँ सभी मुख्य उपयोगिताओं के लिंक हैं। विशेष रूप से, आप यहां एम.वी.


6
you can get the most accurate explanation by reading through the code.क्षमा करें मैं असहमत हूं; लंबे समय तक मुझे सी के साथ बिल्कुल कोई अनुभव नहीं था, और अब भी मैं इसे पसंद नहीं करता। इसके अलावा, स्रोत कोड अक्सर अनुकूलित होता है, और इसमें आवश्यकता से अधिक किनारे-मामले होते हैं। एक प्रतीकात्मक स्पष्टीकरण अक्सर अधिक मदद करता है।
शेल्वकु

1
@shelvacu "में आवश्यकता से अधिक धार के मामले हैं"। रोबस्ट कोड उन सभी किनारे मामलों को संभालता है जो मौजूद हो सकते हैं। हालाँकि यह सच है कि किसी अवधारणा के पहले स्पष्टीकरण में सभी किनारे मामलों को प्रस्तुत करना आवश्यक नहीं हो सकता है।
ओरेगॉनट्रिल

@OregonTrail क्षमा करें कि मेरे कहने का मतलब यह है कि कोड में अधिक धार वाले मामले हैं, फिर स्पष्टीकरण की आवश्यकता है
शेल्वैकु

मुझे खुशी है कि यह आपकी मूल भावना थी, लेकिन आप अभी भी " हैंडल " के मेरे जोर से चूक गए थे । अच्छी तरह से लिखे गए कोड में किनारे के मामले नहीं होते हैं , यह किनारे के मामलों को संभालता है । ;) मुझे पता है कि आप यहाँ सही जगह से आ रहे हैं, लेकिन आपको अपनी क्रियाओं से सावधान रहना चाहिए।
ओरेगॉनट्रिल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.