मैंने optcomplete
optparse
मॉड्यूल के साथ काम किया है। इसका उदाहरण एक साधारण फाइल है इसलिए मैं इसे काम कर सकता हूं। मैंने argparse
मॉड्यूल का उपयोग करके इसका परीक्षण भी किया क्योंकि पहले व्यक्ति को बहिष्कृत किया गया है। लेकिन मैं वास्तव में समझ नहीं पा रहा हूं कि टैब प्रेस पर पायथन प्रोग्राम किस प्रकार और किसके द्वारा बुलाया जाता है। मुझे bash
पर shebang
लाइन और argparse
(या optparse
) मॉड्यूल कुछ तरीकों से शामिल है। मैं इसे समझने की कोशिश कर रहा हूं (अब स्रोत कोड पढ़ना होगा)।पाइथन प्रोग्राम नाम के बाद, बैश में 'टैब' कीप्रेस का जवाब देने वाले Argparse (और बहिष्कृत ऑप्टपरसे) का जवाब कैसे देता है?
मेरे पास थोड़ा और जटिल प्रोग्राम संरचना है, जिसमें कोड के टुकड़े के चारों ओर एक रैपर शामिल है जो तर्कों को संभालता है। इसकी argparse.ArgumentParser()
तात्कालिकता और add_argument()
पर कॉल करें - जो डुप्लीकेटिंग कोड से बचने के लिए किसी अन्य इंटरमीडिएट मॉड्यूल में सुपरक्लास किया गया है, और उसके चारों ओर रैपर कहा जा रहा है - एक फ़ंक्शन के अंदर हैं।
मैं इस टैब को पूरा करने के तरीके को समझना चाहता हूं कि बैश और पायथन (या उस मामले के लिए perl
) के बीच कोई अन्य व्याख्याता काम करता है।
नोट: मुझे बैश पूर्ण करने की उचित समझ है (जिसे मैंने अभी सीखा), और मुझे लगता है कि मैं बैश (केवल) कस्टम समापन को समझता हूं।
नोट: मैं इसी तरह की अन्य अतः सवाल पढ़ा है, और कोई भी वास्तव में इस प्रश्न:
संपादित का जवाब: Here बैश कार्य है।
मैं पहले से ही समझ में आ कैसे अजगर मॉड्यूल कमांड लाइन में लिखे गए शब्द के बारे में पता करने के लिए हो जाता है, चर
$COMP_WORDS
$COMP_CWORD
$COMP_LINE
$COMP_POINT
$COMPREPLY
इन चरों के os.environ
मूल्यों को पढ़ने के द्वारा केवल टैब प्रेस पर मान हैं। मेरा सवाल यह है कि पायथन मॉड्यूल कैसे ट्रिगर हो जाता है?
'ऑप्टिकप्लेट' दस्तावेज़ कहते हैं: "आपको बैश फ़ंक्शन को स्रोत करने की आवश्यकता है और फिर बैश को यह निर्दिष्ट करने के लिए विशिष्ट प्रोग्रामों के लिए अपूर्ण पूर्णता को ट्रिगर करने के लिए बताने के लिए:"। यदि आपने ऐसा किया है, तो आप अभी भी क्यों पूछ रहे हैं कि यह कैसे काम करता है? यह स्पष्ट होना चाहिए कि आपको बशर्ते बताने की जरूरत है कि अगर पूरा होने का अनुरोध किया जाता है तो कौन सा प्रोग्राम कॉल करना है। –
क्षमा करें, मैंने जो पढ़ा है उसे गलत समझा। मैं इसके लिए एक जवाब जोड़ दूंगा। –