यूनिक्स पर पथ नाम घटकों में, केवल दो वर्णों का उपयोग नहीं किया जा सकता है: अशक्त चरित्र, जो सी (तार की भाषा) और स्लेश में तार को समाप्त करता है, जो पथ विभाजक के रूप में आरक्षित है। इसके अलावा, पथ घटक खाली तार नहीं हो सकते।
इसलिए, एक पथ नाम में, हमारे पास केवल दो प्रकार के टोकन हैं: एक स्लैश, और एक घटक।
मान लीजिए कि, बिना किसी नए टोकन को जोड़े , हम दो तरह के रास्तों का समर्थन करना चाहेंगे, रिश्तेदार और निरपेक्ष। इसके अलावा, हम मूल निर्देशिका का उल्लेख करने में सक्षम होना चाहते हैं, जिसका कोई नाम नहीं है (इसका कोई माता-पिता नहीं है जो इसे एक नाम देगा)।
केवल स्लैश का उपयोग करके हम कैसे संबंधित पथों, निरपेक्ष रास्तों का प्रतिनिधित्व कर सकते हैं और रूट डायरेक्टरी का उल्लेख कर सकते हैं?
भाषा का विस्तार करने का सबसे स्पष्ट तरीका (नए टोकन की शुरूआत के अलावा) नया वाक्यविन्यास बनाना है: अमान्य सिंटैक्स वाले टोकन के संयोजन को नया अर्थ दें।
पथ जो एक स्लैश के साथ शुरू होते हैं, इससे कोई मतलब नहीं है, इसलिए एक मार्कर के रूप में एक प्रमुख स्लैश का उपयोग क्यों न करें जो इंगित करता है कि "यह पथ सापेक्ष के बजाय पूर्ण है"।
एक पथ जिसमें कुछ भी नहीं है, लेकिन एक स्लैश भी अमान्य है, इसलिए इसे "रूट निर्देशिका" का अर्थ क्यों न निर्दिष्ट करें।
ये दो अर्थ एक साथ जुड़ते हैं क्योंकि एक पूर्ण मार्ग मूल निर्देशिका में खोजना शुरू करता है। दूसरे शब्दों में एक प्रमुख स्लैश का अर्थ माना जा सकता है:
- मूल निर्देशिका पर जाएँ, और स्लैश वर्ण का उपभोग करें।
- यदि पथ में अधिक सामग्री है, तो इसे एक सापेक्ष पथ के रूप में संसाधित करें, अन्यथा आप कर रहे हैं।
फिर, हम एक अनुगामी स्लैश में भी फेंक सकते हैं, जिसका अर्थ हो सकता है "इस पथ का दावा है कि अंतिम पथ घटक एक नियमित फ़ाइल या किसी अन्य प्रकार की वस्तु के बजाय एक निर्देशिका का नाम है: अनुगामी स्लैश उस निर्देशिका को समान रूप से दर्शाता है जिस तरह से प्रमुख स्लैश रूट डायरेक्टरी को दर्शाता है। "
सिंटैक्स के ऊपर यह सब होने के साथ, हमारे पास अभी भी एक बिना मतलब का सिंटैक्स है: डबल स्लैश, ट्रिपल स्लैश और आगे।
क्यों न सिर्फ एक और टोकन पेश किया जाए और इसे अलग तरीके से किया जाए। यह शायद इसलिए है क्योंकि डिजाइनरों ने सामान्य रूप से न्यूनतम दृष्टिकोण लिया था। ( जब आप कुछ गलत करते हैं तो ed
संपादक केवल क्यों प्रदर्शित करता ?
है?) स्लैश को टाइप करना आसान है, जिसमें कोई बदलाव नहीं करना चाहिए। केवल दो टोकन प्रकार (घटक और स्लेश) के साथ एक पथ भाषा को याद रखना और उपयोग करना आसान है।
एक और महत्वपूर्ण विचार यह है कि केवल स्ट्रिंग अभ्यावेदन का उपयोग करके पथ के आसान जोड़तोड़ संभव हैं। उदाहरण के लिए, हम एक नए मूल निर्देशिका के लिए पूर्ण पथ को "पुनः रूट" कर सकते हैं:
OLD_PATH=/old/path
NEW_HOME=/new/home
NEW_PATH="$NEW_HOME$OLD_PATH" /new/home/old/path
यह काम नहीं करेगा अगर हम किसी अन्य तरीके से निरपेक्ष रास्तों को इंगित करें, जैसे एक प्रमुख डॉलर संकेत या जो कुछ भी:
OLD_PATH=^old/path # ^ means absolute path
NEW_HOME=^new/home
# now we need more string kung-fu than just catenation
NEW_PATH="$NEW_HOME/${OLD_PATH#^}"
यूनिक्स शैली के रास्तों से निपटने के दौरान कुछ मामलों में इस प्रकार की कोडिंग की आवश्यकता होती है, लेकिन इसमें कम है।
cd /home
कि खाली नाम के अंत मेंcd /home/
जोड़ना/
उस निर्देशिका तक पहुँच प्रदान करता है।