कस्टम बैश टैब पूरा होना


34

मेरे पास cooltoolविकल्पों की सूची के साथ मेरी कस्टम कंसोल उपयोगिता है

fooOption
barOption

tabकुंजी को दबाकर विकल्पों को स्वतः पूर्ण करने में मुझे क्या करना चाहिए ?

मेरा मतलब है कि उपयोगकर्ता टाइप किया गया

$ ./cooltool foo_

फिर दबाया गया tab। और तब

$ ./cooltool fooOption _

दिखाई दिया।


1
क्रॉस पोस्ट न करें।
वफर्स

2
ध्यान दें कि यह एक माइग्रेट है और दूसरा नहीं है। मुझे लगता है कि बहुत से उपयोगकर्ताओं को अभी भी यह एहसास नहीं है कि उन्हें कई एसई साइटों पर एक प्रश्न पोस्ट नहीं करना चाहिए। उनका उपयोग उन मंचों को अलग करने के लिए किया जाता है जो एक एकीकृत प्रणाली नहीं हैं, जहाँ आप कुछ अलग-अलग मंचों में तेज़ उत्तर के बेहतर अवसर के लिए पूछ सकते हैं।
jcrawfordor

जवाबों:


2

के लिए एक बैश पूर्ण स्क्रिप्ट लिखें cooltoolबैश-पूर्ण पैकेज कई लोकप्रिय कार्यक्रमों, जो आप उदाहरण के रूप में उपयोग कर सकते हैं के लिए स्क्रिप्ट के साथ आता है।


40

सबसे आसान तरीका यह है कि अपने .bashrc पर निम्न जोड़ें।

_cooltool()
{
    local cur=${COMP_WORDS[COMP_CWORD]}
    COMPREPLY=( $(compgen -W "fooOption barOption" -- $cur) )
}
complete -F _cooltool cooltool

जब भी आप टाइप करते हैं cooltool f[TAB][TAB], तो _cooltool()फंक्शन इनवॉइस होता है। यह काम करेगा कि आपका वर्तमान आंशिक शब्द क्या है और फिर compgenकिस विकल्प से मेल खाता है। इन्हें एक सरणी में संग्रहीत किया जाता है COMPREPLYजिसे तब प्रदर्शित किया जाता है। को देखो man completeऔर man compgenजानकारी के लिए।

एक अच्छे ट्यूटोरियल के लिए देखें: अपना बैश कम्प्लीटेशन फंक्शन लिखना


7

आप अपने सिस्टम पर अपने /etc/bash_completion.d निर्देशिका के अंदर करीब से देखना चाहते हैं।

साथ ही आपको यह परिचय पढ़ना चाहिए । परिचय के दूसरे भाग एक की जरूरत है।


1
मैं मैक ओएस एक्स 10.6 का उपयोग कर रहा हूं, इसलिए कोई /etc/bash_completion.d निर्देशिका नहीं है

आह ठीक है, पता करने के लिए अच्छा है।


2

डोगबेन के जवाब के अलावा, आप यह भी कर सकते हैं:

complete -W "fooOption barOption" cooltool

यदि आप स्ट्रिंग की शुरुआत से शब्दों की एक सूची से मेल खाना चाहते हैं। ऐसा लगता है कि पूर्ण और कम्पेन सबसे अधिक विकल्प साझा करते हैं। मैंने केवल "स्ट्रिंग की शुरुआत" पर ध्यान दिया है जो मेरे द्वारा उपयोग किए जाने वाले आदेशों में मेल खाते हैं, इसलिए मैंने यह साफ पाया कि आप _cooltool फ़ंक्शन में अन्य चीजें कर सकते हैं जैसे:

COMPREPLY=( $(grep "$cur" ~/my_potential_args.txt) )

विकल्प के नाम पर कहीं भी मिलान करने के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.