पुश / पॉप वर्तमान निर्देशिका?


66

बैश के साथ वर्तमान कार्य निर्देशिका को पुश करने और पॉप करने का एक तरीका है? मैंने लिखने की कोशिश की bash;cd dir; ./dostuff;exit;लेकिन वर्तमान निर्देशिका अब है dir

linux  bash 

जवाबों:


91

वहाँ pushdऔर हैpopd

बैश आपके द्वारा देखी गई निर्देशिकाओं का इतिहास रखेगा, आपको बस पूछना होगा। बैश इतिहास को स्टैक में संग्रहीत करता है और स्टैक को प्रबंधित करने के लिए कमांड पुशड और पॉपड का उपयोग करता है।

अधिक पढ़ने के लिए

उदाहरण:

$ pwd; pushd /tmp; pwd; popd; pwd
/home/me
/tmp ~
/tmp
~
/home/me

1
लिंक से अंशpushd Saves the current directory on the top of the directory stack and then cd to dir. With no arguments, pushd exchanges the top two directories.
मास्टर प्रमुख

31

कॉलिंग bashएक नया सबशेल शुरू करता है, जिसका अपना इनपुट है; अन्य कोई भी आदेश तब तक नहीं चलेगा जब तक वह बाहर नहीं निकल जाता। Parens के साथ चलने के लिए आदेशों को घेरना भी एक नया उपखंड शुरू करेगा, लेकिन यह इसके भीतर कमांड चलाएगा।

( cd dir ; ./dostuff )

1
प्रतिभाशाली! पुश करने / पॉप करने की आवश्यकता नहीं है जब इरादा सिर्फ एक अलग निर्देशिका में एक कमांड चलाने का है (उदाहरण के लिए एक निर्भरता को अपडेट करें) तो वर्तमान में वापस आ जाएं।
डेन डस्केलस्क्यू

12

यदि आपको निर्देशिका इतिहास के कई स्तरों की आवश्यकता नहीं है, तो आप यह भी कर सकते हैं:

cd foo
# do your stuff in foo
cd -

pushd/ की तुलना में popd, इसका नुकसान यह है कि यदि cd fooविफल रहता है, तो आप गलत निर्देशिका में समाप्त हो जाते हैं cd -

(संभवत: cd -स्क्रिप्ट्स के बाहर अधिक काम है। "चलिए मैं वहीं वापस जाता हूं जहां मैं था।")


4

मैं अपनी निर्देशिका में परिवर्तन के लिए उपनाम का उपयोग 'सीडी' के लिए करता हूं कहीं तो मैं सिर्फ वहीं वापस जा सकता हूं जहां मैं 'सीडी' था, या 'सीडी ..', आदि का उपयोग करके दो वापस जाओ;

alias pushdd="pushd \$PWD > /dev/null"
alias cd='pushdd;cd'
alias ssh='ssh -A'
alias soc='source ~/.bashrc'
#below to go back to a previous directory (or more)
alias popdd='popd >/dev/null'
alias cd.='popdd'
alias cd..='popdd;popdd'
alias cd...='popdd;popdd;popdd'
alias cd....='popdd;popdd;popdd;popdd'
#below to remove directories from the stack only (do not 'cd' anywhere)
alias .cd='popd -n +0'
alias ..cd='popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0;popd -n +0'

1
क्या आप अधिक विस्तार से बता सकते हैं कि यह कोड क्या करता है?
bwDraco

यह चालाकी है। मेरे पास मेरे पुशड और पॉपड के आसपास कुछ चीजें हैं जो मुझे पसंद हैं। मैं हर समय निर्देशिका स्टैक का उपयोग करता हूं। मैं कहीं न कहीं लोगों को सीडी देखने से नफरत करता हूं और फिर पिछली निर्देशिका को काटने और चिपकाने के लिए वापस स्क्रॉल करता हूं। मैं अपने होम डायरेक्टरी में अपना ज्यादातर काम कोटा की वजह से नहीं कर सकता, इसलिए मुझे नेटवर्क पर जमा संग्रहण का उपयोग करना होगा।
माइकल मैथ्यूज

1
क्या उपनाम ..cdकाफी मजबूत है? ऐसा लगता है कि यह केवल पिछले 10 आइटम को स्टैक से हटा देता है।
रेनॉल्डस्लैप
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.