Cd का उपयोग करते समय / का उपयोग करें


12

मैं अपने घर निर्देशिका में अपने मैक पर हूँ:

$ pwd
/Users/lukas

जब मैं cdचारों ओर होता हूं , तो मैं (और नहीं कर सकता) के साथ पथ शुरू करें /:

$ cd Documents/
/Users/lukas/Documents

$ cd /Documents
-bash: cd: /Documents: No such file or directory

सिवाय इसके कि मैं कब हूँ /:

$ pwd
/
$ cd Users
/Users

$ cd /Users
/Users

मैं का उपयोग क्यों कर सकते हैं /पथ के सामने जब से जा रहा /करने के लिए /Users, लेकिन बाद में किसी भी स्तर में नहीं? क्या यह macOS के लिए विशिष्ट है या यह मानक यूनिक्स व्यवहार है?


11
मुझे लगता है कि रिश्तेदार और निरपेक्ष रास्तों के बारे में सवाल बीफॉफ्रे से पूछे गए हैं
adamczi

6
@adamczi यह बहुत स्पष्ट है कि ओपी को पता नहीं है कि एक सापेक्ष मार्ग क्या है, या इसका सिंटैक्स कैसा है, इस प्रकार वह ऊपर नहीं देख सकता है।
मोनिका

12
@ K.Gkinis जो डुप्लिकेट के रूप में बंद नहीं होने का एक कारण नहीं है। यह उत्तरदाताओं को अच्छे उत्तर प्राप्त करने में मदद करता है (मान लीजिए उत्तर अच्छे हैं) और उत्तरदाता समान सामग्री के कम संस्करणों को बनाए रखने के लिए।
user202729

9
@ K.Gkinis और, एक अर्थ में, यह एक डुप्लिकेट के रूप में बंद करने के बिंदु का एक बड़ा हिस्सा है: लोग बहुत से अलग-अलग तरीकों से सवाल पूछेंगे, इसलिए बहुत सारे प्रश्न (उन तरीकों से मेल खाते हैं) जो किसी एकल उत्तर की ओर इशारा करते हैं अच्छी बात। इस तरह के मामलों में (जहां एक ओपी को खोजने के लिए शब्द नहीं पता है), क्लोजिंग-ऐस-ड्यूप उनकी आलोचना नहीं है, बस लोगों को सवाल पूछने के कई तरीके से निपटने का सबसे अच्छा तरीका है।
ट्रिपहाउंड

1
@adamczi वे पहले (लिंक के लिए धन्यवाद!) कहा है गया है, लेकिन मेरे सवाल का और विशेष रूप से महान यहाँ दी गई उत्तर दिए गए हैं जिस तरह से जितना अधिक विस्तृत और आपके द्वारा जुड़ा हुआ की तुलना में बेहतर अवधारणा की व्याख्या। पता नहीं है कि क्या नकल के रूप में बंद करने के लिए मायने रखता है, लेकिन एक विचार हो सकता है।
लुकासकाउरू

जवाबों:


45

यह मानक यूनिक्स व्यवहार है।

/पथ की शुरुआत में डिस्क (या शुरू / फाइल सिस्टम के पेड़ के ऊपरवाला स्तर) की जड़ का प्रतिनिधित्व करता है। जैसा Documentsकि जड़ से नहीं है, /Documentsनहीं पाया जा सकता है।

/Users रूट निर्देशिका बंद है, इसलिए यह समस्या उत्पन्न नहीं होती है।

आप cd /Users/lukas/Documentsउस पथ को बदलने के लिए उपयोग कर सकते हैं ।

वैकल्पिक रूप से, आप सापेक्ष पते का उपयोग कर सकते हैं। यूनिक्स आधारित फाइलसिस्टम में 2 विशेष निर्देशिकाएं हैं:

  • . जिसका अर्थ है "यह निर्देशिका",
  • .. जिसका अर्थ है मूल निर्देशिका।

यदि आप अंदर हैं /Users/lukas, cd ./Documentsतो आपको सही जगह पर ले जाएगा।

मान लें कि आप अंदर थे /Users/Lukas/Documentsऔर आप जाना चाहते थे /Users/Janes/Documents, आप एक आदेश जारी कर सकते थे cd ../../Janes/Documents- उपयोग करने से ..आप एक स्तर वापस ले लेंगे - इसलिए आप इसे दो बार करेंगे, नए रिश्तेदार पथ में जाने से पहले।


1
नोट: जैसा कि @davidgo ने कहा, जब में Users/lukas, रिश्तेदार पथ केcd Documents लिए कहता है ; निरपेक्ष पथ केcd /Users/Lukas/Documents लिए कॉल (जो इस आदेश को कॉल करते समय आप जो भी प्रदर्शन कर रहे हैं वह काम करेगा)।
शान-एक्स

1
जबकि सवाल मैक के बारे में है, जो एक यूनिक्स प्रणाली है, यह भी मानक एमएस-डॉस / विंडोज व्यवहार है ( /`\` के साथ प्रतिस्थापित ) क्योंकि डॉस ने इसे (लंबे, जटिल इतिहास के माध्यम से) यूनिक्स से उधार लिया था।
फ्रीमैन

2
इसके अलावा आपके द्वारा उपयोग किए जाने वाले शेल के आधार पर, सीडी $ HOME / दस्तावेज या सीडी ~ / दस्तावेज भी काम करेंगे। शेल वेरिएबल HOME ($ HOME के ​​साथ एक्सेस किया गया) आपके होम डायरेक्टरी के लिए सामान्य संग्रहण स्थान है (~ $ HOME के ​​लिए एक विशेष उपनाम)।
pboss3010 16

13

/Users/lukasएक "निरपेक्ष" पथ है। अग्रणी /आपके फाइल सिस्टम के रूट डायरेक्टरी का प्रतिनिधित्व करता है।

lukasएक "सापेक्ष" पथ है। जैसा कि यह रूट के लिए लंगर नहीं डाला गया है, इसका मतलब है " वर्तमान निर्देशिका में इसके लिए देखो "। जब तक वर्तमान निर्देशिका नहीं है /Users(या इसमें कुछ अन्य निर्देशिका lukasहै), यह विफल हो जाएगा।

तो, चलिए आपके उदाहरणों का पता लगाते हैं /Users/lukas:

$ cd Documents/
/Users/lukas/Documents

दिए गए सापेक्ष पथ => निर्देशिका के लिए परिवर्तन "दस्तावेज़" जो अंदर है /Users/lukas

$ cd /Documents
-bash: cd: /Documents: No such file or directory

निरपेक्ष पथ दिया => निर्देशिका में परिवर्तन /Documents

$ pwd
/

इससे पता चलता है कि आपने अब वर्किंग डायरेक्टरी को रूट डायरेक्टरी में बदल दिया है, /(हालांकि cdऐसा करने का कमांड नहीं दिखाया गया था)।

$ cd Users
/Users

दिए गए सापेक्ष पथ => निर्देशिका के अंदर परिवर्तन "उपयोगकर्ता" जो कि अंदर है /

$ cd /Users
/Users

निरपेक्ष पथ दिया => निर्देशिका में परिवर्तन /Users

हर बार प्रमुख है कि अग्रणी /। इसके साथ, मार्ग निरपेक्ष है। इसके बिना, मार्ग सापेक्ष है। यह नियम असंदिग्ध है क्योंकि सभी निरपेक्ष पथ से शुरू होते हैं /(क्योंकि रूट डायरेक्टरी को हमेशा कहा जाता है /)।

यहाँ कुछ pseudocode को उस एल्गोरिथ्म का वर्णन करते हुए शिथिल किया गया है:

MakePathAbsolute(path):
   if <path> starts with '/'
      return <path>
   else
      return <current directory>/<path>

cdइस एल्गोरिथ्म के माध्यम से जाने के लिए आप जो तर्क पास करते हैं ; जिस निर्देशिका को आप बदलते हैं, वह वह पथ है जो एल्गोरिथ्म देता है।


आगे की पढाई:


यह एक महान वॉक-थ्रू भी है और वास्तव में इस व्यवहार को समझने में मदद करता है। धन्यवाद! :)
लुकासकाउरू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.