बैश के साथ वर्तमान कार्य निर्देशिका को पुश करने और पॉप करने का एक तरीका है? मैंने लिखने की कोशिश की bash;cd dir; ./dostuff;exit;लेकिन वर्तमान निर्देशिका अब है dir।
बैश के साथ वर्तमान कार्य निर्देशिका को पुश करने और पॉप करने का एक तरीका है? मैंने लिखने की कोशिश की bash;cd dir; ./dostuff;exit;लेकिन वर्तमान निर्देशिका अब है dir।
जवाबों:
वहाँ pushdऔर हैpopd
बैश आपके द्वारा देखी गई निर्देशिकाओं का इतिहास रखेगा, आपको बस पूछना होगा। बैश इतिहास को स्टैक में संग्रहीत करता है और स्टैक को प्रबंधित करने के लिए कमांड पुशड और पॉपड का उपयोग करता है।
उदाहरण:
$ pwd; pushd /tmp; pwd; popd; pwd
/home/me
/tmp ~
/tmp
~
/home/me
कॉलिंग bashएक नया सबशेल शुरू करता है, जिसका अपना इनपुट है; अन्य कोई भी आदेश तब तक नहीं चलेगा जब तक वह बाहर नहीं निकल जाता। Parens के साथ चलने के लिए आदेशों को घेरना भी एक नया उपखंड शुरू करेगा, लेकिन यह इसके भीतर कमांड चलाएगा।
( cd dir ; ./dostuff )
यदि आपको निर्देशिका इतिहास के कई स्तरों की आवश्यकता नहीं है, तो आप यह भी कर सकते हैं:
cd foo
# do your stuff in foo
cd -
pushd/ की तुलना में popd, इसका नुकसान यह है कि यदि cd fooविफल रहता है, तो आप गलत निर्देशिका में समाप्त हो जाते हैं cd -।
(संभवत: cd -स्क्रिप्ट्स के बाहर अधिक काम है। "चलिए मैं वहीं वापस जाता हूं जहां मैं था।")
मैं अपनी निर्देशिका में परिवर्तन के लिए उपनाम का उपयोग 'सीडी' के लिए करता हूं कहीं तो मैं सिर्फ वहीं वापस जा सकता हूं जहां मैं 'सीडी' था, या 'सीडी ..', आदि का उपयोग करके दो वापस जाओ;
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'
..cdकाफी मजबूत है? ऐसा लगता है कि यह केवल पिछले 10 आइटम को स्टैक से हटा देता है।
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.