मेरे पास वर्तमान में एक बैश पूर्णता फ़ाइल है जो स्क्रिप्ट के लिए अनुमत आदेशों की सूची से एक पैरामीटर पूरा करती है (जिसे "पीबीटी" कहा जाता है)। तो अगर मैं फोनमल्टी लेवल बैश प्राप्ति
pbt <tab>
बैश सब अनुमति आदेश (asadmin, स्वच्छ, तैनात) है, जो ठीक है के लिए पूरा करता है
_pbt_complete()
{
local cur goals
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
goals='asadmin clean deploy'
cur=`echo $cur`
COMPREPLY=($(compgen -W "${goals}" ${cur}))
}
complete -F _pbt_complete pbt
: यह काम कर रहा बैश समापन फ़ाइल है।
अब मैं पूरा करने के लिए "दूसरा" स्तर जोड़ना चाहता हूं। उदाहरण के लिए अगर मैं टाइप
pbt asadmin <tab>
यह सभी विकल्प है कि asadmin- "पर्यावरण" (जो मैं भी बैश पूरा होने फाइल के अंदर परिभाषित करेंगे) के अंदर ही उपलब्ध हैं पूरा करना चाहिए, उदाहरण के pbt asadmin [start-domain|stop-domain]
के लिए लेकिन अगर कहते हैं कि मैं टाइप
pbt deploy <tab>
यह उदाहरण pbt deploy [all|current]
के लिए, विकल्पों में से एक और सेट करने के लिए पूरा करना चाहिए। तो दूसरे आदेश के लिए विकल्प हमेशा पहले कमांड पर निर्भर होना चाहिए। मैं इसे पूरा करने की फाइल में कैसे कर सकता हूं?
क्या आपने बैश-पूर्णता पैकेज स्थापित किया है या देखा है? http://bash-completion.alioth.debian.org/ पी 4 और एपीटी मॉड्यूल ऐसा करते हैं। – mkb