path - bash expand cd with shortcuts like zsh -


क्या ऐसा कुछ संभव है जैसे

सीडी / यू / लो / बी & lt; हिट टैब & gt;

से

cd / usr / local / bin

क्षमा करें, मैं पहले पोस्ट नहीं कर सका, मुझे काम पर रखा गया था, और बाँध फ़ंक्शंस मेरे मुकाबले ज्यादा समस्या थी। पहले सोचा।

यह है कि मैं किसके साथ आया हूं:

निम्न स्क्रिप्ट से बाइंड करें:

  #! / Bin / bash # $ HOME / .bashrc.d / autocomplete.sh autocomplete_wrapper () {बेस = "$ {READLINE_LINE% *}" # हम आखिरी तर्क को छोड़कर रेखा को बचाएं [["$ BASE" == "$ READLINE_LINE"]] & amp; amp; आधार = ""; # यदि पंक्ति में केवल 1 तर्क है, तो हम बेस को रिक्त एक्सपेन्सियन = ($ (स्वत: पूर्णतया "$ {READLINE_LINE ## *}") सेट कर रहे हैं) [[$ {# EXPANSION [@]} -gt 1]] & amp; amp ; गूंज "$ {EXPANSION [@]: 1}" #if 1 से अधिक मैच है, हम उन्हें गूंजते हैं READLINE_LINE = "$ BASE $ {EXPANSION [0]}" # वर्तमान पंक्ति अब आधार + पहला तत्व READLINE_POINT है = $ {# READLINE_LINE} # हम वर्तमान कर्सर के अंत में हमारे कर्सर को स्थानांतरित करते हैं} स्वत: पूर्ण () {LAST_CMD = "$ 1" # '~', './' और '/' [["$" के लिए विशेष आरंभिक वर्ण विस्तार {LAST_CMD: 0: 1} "==" ~ "]] & amp; amp; LAST_CMD = "$ HOME $ {LAST_CMD: 1}" एस = 1; [["$ {LAST_CMD: 0: 1}" == "/" || "$ {LAST_CMD: 0: 2}" == "./"]] और amp; amp; एस = 2; # हम उन # का विस्तार नहीं करते हैं हम प्रत्येक तर्क के पहले * * जोड़कर अंतिम तर्क का मार्ग विस्तार करते हैं (= ($ (प्रतिध्वनि "$ LAST_CMD *" | sed s: /: * /: "$ S" g) ))      अगर [[ ! -e "$ {EXPANSION [0]}"]]; फिर # अगर पथ का विस्तार नहीं किया जा सकता है, तो हम आउटपुट "$ LAST_CMD" एलीफ को बदल नहीं सकते [["$ {# EXPANSION [@]}" -ईक 1]]; फिर # केवल अगर केवल एक मैच होता है, तो हम इसे "$ {EXPANSION [0]}" कहते हैं और हम इसे जितना संभव हो उतना रास्ता बढ़ाते हैं और जब तक संभव परिणाम वापस लौटाते हैं, तब [[$ l - ले "$ {# EXPANSION [0]}"]]; "$ {EXPANSION [@]}" में मेरे लिए क्या करना है; क्या करें [["$ {EXPANSION [0]: $ l: 1}"! = "$ {I: $ l: 1}"]];; फिर CTRL_LOOP = 1 ब्रेक फ़्यू किया [[$ CTRL_LOOP -q 1]] & amp; amp; ब्रेक ((+++)) # हमने समाधानों की सरणी के बगल में आंशिक समाधान जोड़ लिया "$ {EXPANSION [0]: 0: $ l} $ {EXPANSION [@}}" फाई  / Pre> 

निम्न कमांड के साथ:

  स्रोत "$ HOME / .bashrc.d / autocomplete.sh" बाँध- x '"\ t": स्वत: पूर्णांक_वापर'  

आउटपुट:

  & gt; $ cd / u / lo / b & lt; TAB & gt; & Gt; $ cd / usr / स्थानीय / bin & gt; $ cd / u / l & lt; TAB & gt; / Usr / local / usr / lib & gt; $ cd / usr / l  

बाइन लाइन को आपके ~ / .bashrc फ़ाइल में जोड़ा जा सकता है, कुछ करना इस तरह से:

  अगर [["$ HOME / .bashrc.d / autocomplete.sh"]]; तो स्रोत "$ HOME / .bashrc.d / autocomplete.sh" बाइंड -एक्स '"\ ​​t": स्वत: पूर्णांक_वापर' फाई   

(से लिया गया)

इसके अलावा , मैं इस आदेश को आपके टैब कुंजी पर बाध्य करने के बारे में जोरदार सलाह देता हूं क्योंकि यह डिफ़ॉल्ट स्वतः पूर्णतः ओवरराइड होगा।

नोट: कुछ मामलों में, यह यदि आप स्वत: पूर्ण करने के लिए "रिक्त स्थान / कुछ के साथ / पथ" स्वत: पूर्ण करने का प्रयास करते हैं, तो दुर्व्यवहार, जैसा कि पूरा करने का अंतिम तर्क $ {READLINE_LINE ## *} द्वारा निर्धारित किया जाता है। यदि यह आपके मामले में कोई मुद्दा है, तो आपको ऐसे फ़ंक्शन को कोड करना चाहिए जो उद्धरणों पर विचार करते समय एक पंक्ति का अंतिम तर्क देता है

आगे स्पष्टीकरण के लिए पूछने के लिए स्वतंत्र महसूस करें, और मैं इस स्क्रिप्ट को सुधारने के लिए कोई सुझाव का स्वागत करता हूं < / P>


Comments

Popular posts from this blog

sqlite3 - UPDATE a table from the SELECT of another one -

c# - Showing a SelectedItem's Property -

javascript - Render HTML after each iteration in loop -