मैं एक शेल स्क्रिप्ट लिख रहा हूं जिसे किसी स्थान पर cd
की आवश्यकता है। क्या पिछले स्थान पर वापस जाने का कोई तरीका है, यानी cd
से पहले स्थान निष्पादित किया गया था?'cd' कमांड के बाद पिछले स्थान पर वापस आएं?
उत्तर
आप बस
cd -
कि तुम वापस अपने पिछले स्थान पर ले जाएगा कर सकते हैं।
कुछ गोले आपको pushdir/popdir कमांड, check out this site का उपयोग करने देते हैं। आपको यह SO question उपयोगी भी मिल सकता है।
आप पीडब्ल्यूडी को एक चर में और सीडी को उस चर में वापस प्रतिबिंबित कर सकते हैं। यह शांत हो सकता है।
हाँ, यह एक अच्छा विचार है! –
वह '$ OLDPWD' नहीं है? सिद्धांत में – IsaacS
यदि आप किसी स्क्रिप्ट के अंदर चल रहे हैं, तो आप उप-प्रक्रिया के अंदर स्क्रिप्ट का हिस्सा भी चला सकते हैं, जिसमें $ PWD का निजी मूल्य होगा।
# do some work in the base directory, eg. echoing $PWD
echo $PWD
# Run some other command inside subshell
(cd ./new_directory; echo $PWD)
# You are back in the original directory here:
echo $PWD
यह अपने फायदे और नुकसान हैं ... यह अच्छी तरह निर्देशिका को अलग करता है, लेकिन उत्पन्न करने वाला उप प्रक्रियाओं महंगा यदि आप इसे एक बहुत कुछ कर रहे हैं हो सकता है। (संपादित करें: @ नोर्मन ग्रे के नीचे बताए गए अनुसार, उप-प्रक्रिया को बढ़ाने का प्रदर्शन जुर्माना शायद बाकी की लिपि में जो भी हो रहा है उससे संबंधित बहुत महंगा नहीं है)
रखरखाव के लिए, मैं आम तौर पर इस दृष्टिकोण का उपयोग करें जब तक कि मैं साबित नहीं कर सकता कि स्क्रिप्ट धीरे-धीरे चल रही है।
+1, लेकिन क्या आपने _measured_ प्रदर्शन प्रदर्शन किया है? चूंकि प्रत्येक कमांड जो शेल अंतर्निहित नहीं है, वह एक कांटा करेगा, मुझे संदेह है कि एक सबहेल के लिए कांटा किसी भी महत्वपूर्ण प्रदर्शन जुर्माना होने की संभावना है। –
एक अन्य विकल्प कार्यों है कि आप अपने .bashrc कि आप नामित निर्देशिका के लिए जाने की अनुमति देने के लिए जोड़ सकते हैं का एक छोटा सा समूह है:
# cd /some/horribly/long/path
# save spud
# cd /some/other/horrible/path
# save green
...
# go spud
/some/horribly/long/path
यह A directory navigation productivity tool पर दर्ज है, लेकिन मूल रूप से "के उत्पादन में बचत शामिल है pwd "उपरोक्त मामले में नामित निमोनिक्स (" स्पड "और" हरा ") में, और फिर फ़ाइलों की सामग्री को cd'ing।
धन्यवाद। 'Pushd' और' popd' काम करेगा! :) लेकिन क्या गूंज को बंद करने का कोई तरीका है? (यानी, उन आदेशों को 'quiety' निष्पादित करने दें?) –
@OneTwoThree मुझे नहीं पता कि मैं आमतौर पर 'cd -' का उपयोग करता हूं। हालांकि, आप कुछ काम के रूप में 'pushd>/dev/null' जैसे कुछ भी कर सकते हैं। यदि आप इसे एक स्क्रिप्ट में डाल रहे हैं, तो आपके खोल को चुप करने का विकल्प हो सकता है। – Levon
मैं देखता हूं। धन्यवाद!!! –