कई बैश स्क्रिप्ट (शांत पुशड / पॉपड) पर पुश / पॉपड स्टैक प्रदर्शित न करें


93

हर बार जब मैं पुशड या पॉप का उपयोग करता हूं, तो यह स्टैक को मानक आउटपुट पर प्रिंट करता है। कैसे न करें?

मैं pushd > /dev/nullहर बार नहीं करना चाहता क्योंकि मेरे पास एक-दूसरे को बुलाने वाली बहुत सारी स्क्रिप्ट हैं।

शायद एक अच्छा ओवरराइड यह कर देगा, लेकिन मुझे इन लिपियों को केवल मेरी लिपियों में ओवरराइड करने की आवश्यकता होगी, और फिर सही व्यवहार को पुनर्स्थापित करना होगा।


2
यदि कोई व्यक्ति इस सवाल को पार करना चाहता है, तो आप एक एकल घटना को मौन कर सकते हैं जिसे आप बदल सकते हैं pushdऔर उसके popdसाथ cdऔर cd ~-~-एक टिल्ड विस्तार है जो $ OLDPWD पर सेट है ।
अगस्टिन लाडो

@ AgustínLado cd -भी काम करता है। निश्चित नहीं है कि कौन सी संस्करण प्रणालियों की विस्तृत श्रृंखला के साथ अधिक संगत है।
शिप्लू मोकादिम

1
@ShipluMokaddim: टिल्ड के बिना यह फ़ोल्डर का नाम प्रिंट करता है (कम से कम उबंटू 18.04 पर डब्ल्यूएसओ पर चल रहा है)।
अस्त्राजुम्स

यदि आपके पास एक या cd some/pathएक cd -या cd "${return_wd}"कुछ समान के बीच आदेशों का क्रम है , तो फ़ंक्शन के बीच में आदेशों को समूहीकृत करने पर विचार करें और जैसे उपधारा का उपयोग करें (cd some/path; your_commands_here)। पुरानी PWD में निर्देशिका नेविगेशन उपखंड के अंत में निहित है। कमांड प्रतिस्थापन के लिए भी काम करता है।
user4642212

जवाबों:


133

आप जोड़ सकते हैं

pushd () {
    command pushd "$@" > /dev/null
}

popd () {
    command popd "$@" > /dev/null
}

प्रत्येक स्क्रिप्ट के शीर्ष पर। यह संभवतः आपकी समस्या को हल करने के लिए काम की न्यूनतम राशि होगी।


वास्तव में मुझे क्या चाहिए ... धन्यवाद!
RonzyFonzy

यदि आप त्रुटियों को चुप करना चाहते हैं (उदाहरण के लिए ऐसी कोई निर्देशिका नहीं), तो आप &>इसके बजाय का उपयोग कर सकते हैं>
मैटस्टर्जन सर्जन

4
त्रुटियों को शांत करते समय सावधान रहें: आप बाद की तारीख में विफलता का निदान करने के लिए एक कठिन बना सकते हैं। सुनिश्चित करें कि आप एक नॉट-ओके रिटर्न कोड की जांच करते हैं और उसी के अनुसार प्रतिक्रिया देते हैं।
डेविड स्पिललेट

यह कम से कम आक्रामक विकल्प है।
PuzzledVacuum

1
@ xdevs23 || exit $?बस के बराबर है || exit। उसी के लिए return
user4642212 17

3

अपनी .profile फ़ाइल में (जिसे कभी आपके सिस्टम में कहा जाता है) जोड़ें:

pushd () {
    command pushd "$@" > /dev/null
}

popd () {
    command popd "$@" > /dev/null
}

export pushd popd

13
यह पूरे सिस्टम को प्रभावित करता है ... व्यक्तिगत रूप से, मैं इस तरह से सिफारिश नहीं करता हूं। ।
सीन 83

3

Zsh में आप कर सकते हैं setopt PUSHDSILENT। इसको अपने अंदर डालो ~/.zshrc


1
या popd -q(शांत) का उपयोग करें ।
rxw

5
popd में -qविकल्प नहीं है
MarekN

2
@MarekN: "popd -q" की पिछली टिप्पणी में zsh का जिक्र था, न कि bash, भले ही मूल प्रश्न को bash के उत्तर के रूप में टैग किया गया था, zsh को नहीं।
b-jazz

यह एक अच्छी टिप्पणी या एक जवाब के लिए एक स्पर्श है, लेकिन यह एक सवाल के बारे में एक स्टैंडअलोन जवाब के रूप में संबंधित नहीं है जो इसके बारे में नहीं पूछ रहा है zsh
प्रातः काल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.