पोप / पुशड पथ के स्टैक को हटाने या समाशोधन करना


39

pushdकई बार आईएनजी के बाद , मैं रास्तों के पूरे ढेर को साफ करना चाहता हूं।

popdस्टैक में सभी आइटम कैसे होंगे ?

मैं यह popdजानना चाहता हूं कि स्टैक में कितने हैं?

बैश मैनुअल इसे कवर नहीं करता है ।

मुझे यह जानने की आवश्यकता क्यों है? मैं तेजस्वी हूं और ढेर को साफ करने के लिए।


1
BTW, पूरा बैश मैनुअल gnu.org पर खत्म हो गया है। यदि आप एक पृष्ठ संस्करण पर सभी का उपयोग करते हैं, तो वहां सामान ढूंढना आसान हो सकता है।
jw013

अह इच्छा है कि गूगल अनुक्रमित एक। धन्यवाद @ jw013
chrisjlee

जवाबों:


47

dirs -c वह है जो आप ढूंढ रहे हैं।


1
यह स्टैक को खाली करता है , लेकिन स्टैक के निचले हिस्से से कार्य निर्देशिका को पुनर्स्थापित नहीं करता है
एलिरन मलका

8

दोनों को स्टैक खाली करने के लिए और स्टैक नीचे से कार्य निर्देशिका को पुनर्स्थापित करें, या तो:

  • उस निर्देशिका dirsको उस निर्देशिका में बदलें, और स्टैक को साफ़ करने की अपेक्षा:

    cd "$(dirs -l -0)" && dirs -c

    यहां -lविकल्प पूर्ण पथों को सूचीबद्ध करेगा, यह सुनिश्चित करने के लिए कि हम विफल नहीं होते हैं यदि हम इसमें प्रयास cdकरते हैं ~, और -0स्टैक नीचे से पहली प्रविष्टि को पुनः प्राप्त करते हैं।

    @ jw013 ने पथ विस्तार से बचते हुए इस आदेश को और मजबूत बनाने का सुझाव दिया:

    pushd -0 && dirs -c
  • या, popdजब तक आप एक त्रुटि का सामना न करें (जो popdनिर्देशिका स्टैक खाली होने पर कॉल की स्थिति है):

    while (( $? == 0 )); do popd; done

1
पहली विधि वही है जो मैं चाहता था। मेरे मामले में दूसरा काम नहीं करेगा क्योंकि मैंने pushdकुछ बार फोन किया था , फिर बीच में से एक निर्देशिका को हटा दिया popdथा , तब असफल हो रहा था जब मैंने अनियंत्रित होने की कोशिश की थी। जहाँ मुझे शुरू करने के लिए मुझे बीच में सभी बिगड़े हुए सामानों पर कूदने की ज़रूरत थी।
चक विल्बर

दाईं ओर @ChuckWilbur - अगर आपने dir स्टैक को खंगाल लिया है, तो आप popdको बचा नहीं पाएंगे :)
Eliran Malka

इसके pushd -0बजाय बेहतर है cd "$(dirs ...)"
jw013

@ jw013 कैसे? वह डायर स्टैक के साथ और भी गड़बड़ करेगा (जो हम यहाँ साफ़ करने की कोशिश कर रहे हैं ..)
एलिरन मलका

1
cd "$(...)"90% में काम करता है, शायद 99% उपयोग के मामले भी हैं, लेकिन pushd -0आप विश्वास के साथ 100% कह सकते हैं। शेल में फ़ाइल / निर्देशिका पथों के विस्तार से जुड़े कई संभावित गोच और किनारे मामले हैं, जो करने के लिए सबसे मजबूत बात यह है कि यह पूरी तरह से बचें, जो pushd -0बहुत संक्षिप्त रूप से करता है। यदि आप कभी जोखिम नहीं लेते हैं, तो एक अजीब किनारे के मामले के साथ बग को पकड़े जाने का कोई मौका नहीं है। यदि आप यूनिक्स फ़ाइल / पथ नामों के साथ शामिल संभावित सिरदर्द पर आगे पढ़ना चाहते हैं, तो एक अच्छा प्रारंभिक बिंदु mywiki.wooledge.org/ParsingLs
jw013
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.