यहां खेलने के लिए दो चीजें हैं। सबसे पहले, -
अकेले आपकी पिछली निर्देशिका में विस्तारित है। यह (जोर मेरा) के cd
भाग में समझाया गया है man bash
:
-
निर्देशिका परिवर्तन का प्रयास करने से पहले एक तर्क को $ OLDPWD में बदल दिया जाता है। यदि CDPATH से एक गैर-खाली निर्देशिका नाम का उपयोग किया जाता है, या यदि -
पहला तर्क है, और निर्देशिका परिवर्तन सफल है, तो नई वर्किंग निर्देशिका का निरपेक्ष पथनाम मानक आउटपुट को लिखा जाता है। यदि निर्देशिका सफलतापूर्वक बदल दी गई थी, तो वापसी का मूल्य सही है; गलत है अन्यथा।
तो, एक सरल cd -
आपको अपनी पिछली निर्देशिका में वापस ले जाएगा और निर्देशिका के नाम को प्रिंट करेगा। अन्य आदेश "टिल्ड एक्सपेंशन" खंड में प्रलेखित है:
यदि टिल्ड-प्रीफ़िक्स एक है ~+
, शेल चर PWD का मान टिल्ड-प्रीफ़िक्स को बदल देता है। यदि टिल्ड-प्रीफ़िक्स एक है ~-
, तो शेल वैरिएबल OLDPWD का मान, यदि यह सेट है, प्रतिस्थापित किया जाता है। यदि tilde- उपसर्ग में tilde के बाद वाले वर्णों में N की संख्या होती है, वैकल्पिक रूप से a +
या a -
से उपसर्ग होता है, तो tilde- उपसर्ग को डायरेक्टरी स्टैक से संबंधित तत्व से बदल दिया जाता है, क्योंकि यह dirs द्वारा निर्मित डारिन द्वारा प्रदर्शित किया जाएगा। एक तर्क के रूप में tilde- उपसर्ग। यदि टिल्ड-उपसर्ग में टिल्ड के बाद के अक्षर एक अग्रणी +
या बिना एक संख्या से मिलकर बने होते हैं -
, +
तो मान लिया जाता है।
यह एक उदाहरण के साथ समझने में आसान हो सकता है:
$ pwd
/home/terdon
$ cd ~/foo
$ pwd
/home/terdon/foo
$ cd /etc
$ pwd
/etc
$ echo ~ ## prints $HOME
/home/terdon
$ echo ~+ ## prints $PWD
/etc
$ echo ~- ## prints $OLDPWD
/home/terdon/foo
तो, सामान्य तौर पर, -
"पिछली निर्देशिका" का मतलब है। इसीलिए cd -
अपने आप से आप जहाँ भी थे वहाँ वापस चले जाएँगे।
मुख्य अंतर यह है कि बिलिन के cd -
लिए विशिष्ट है cd
। यदि आप echo -
इसे करने की कोशिश करते हैं तो बस एक प्रिंट होगा -
। ~-
टिल्ड विस्तार कार्यक्षमता का हिस्सा है और एक चर की तरह ही व्यवहार करता है। इसलिए आप echo ~-
कुछ सार्थक प्राप्त कर सकते हैं। आप इसका उपयोग भी कर सकते हैं cd ~-
लेकिन आप इसे किसी अन्य कमांड में भी उपयोग कर सकते हैं। उदाहरण के लिए cp ~-/* .
जो इसके बराबर होगाcp "$OLDPWD"/* .
cd ~-
।