मैं अपनी पायथन लिपि के तर्क के लिए वैध टैब-पूर्णता कैसे बता सकता हूं


14

कहो कि मेरे पास एक कार्यक्रम है हेल्लोएम्ड और इसका एक संभावित वैध तर्क है:

./hello.py autoawesomesauce

में टाइप करना संभव है:

./hello.py auto[tab]

आंशिक रूप से पूर्ण किए गए तर्क को हेलो को भेजा जाता है, जो इसे इस तरह से पहचानता है और फिर इसे शेल पर पूरा करता है:

./hello.py autoawesomesauce

मुझे पता है कि git कुछ ऐसा करता है, लेकिन क्या इसे पाइथन स्क्रिप्ट + बैश के लिए किया जा सकता है?


4
पायथन लिपि नहीं हो सकती। मारना चाहिए।

क्या वास्तव में के लिए upvote?

जवाबों:


7

लिनक्स सिस्टम पर, आप आम तौर पर बड़ी संख्या में उदाहरण स्क्रिप्ट के अंतर्गत पा सकते हैं /etc/bash_completion.d:। यदि आप इन लिपियों का स्रोत बनाते हैं, तो आपको स्वतः पूर्ण व्यवहार मिलेगा।

मैंने उस निर्देशिका से एक उदाहरण शामिल किया है। यह अनार की पूरी पटकथा है।

_unrar()
{
    local cur

    COMPREPLY=()
    _get_comp_words_by_ref cur

    if [[ "$cur" == -* ]] ; then
        COMPREPLY=( $( compgen -W '-ad -ap -av- -c- -cfg- -cl -cu \
            -dh -ep -f -idp -ierr -inul -kb -o+ -o- -ow -p -p- -r -ta \
            -tb -tn -to -u -v -ver -vp -x -x@ -y' -- "$cur" ) )
    else
        if [ $COMP_CWORD -eq 1 ]; then
            COMPREPLY=( $( compgen -W 'e l lb lt p t v vb vt x' -- "$cur" ) )
        else
            _filedir '@(rar|RAR)'
        fi
    fi

} &&
complete -F _unrar -o filenames unrar

क्या है _get_comp_words_by_ref?
ई-जानकारी १

4

इस कार्यक्षमता में पायथन के साथ करने के लिए शून्य है। यह अंडरलेइंग शेल की शुद्ध कार्यक्षमता है। इसलिए स्वतः पूर्ण होने पर बैश डॉक्स को पढ़ें।

"बैश ऑटो-कम्पलीशन" के लिए Google और आपको पहले 10 हिट के तहत कम से कम 5 उचित डॉक्स मिलेंगे।


जिसका अर्थ है कि अपनी पाइथन लिपि को बैश स्क्रिप्ट में लपेटना एक अच्छा विचार हो सकता है, जिससे बैश स्क्रिप्ट को अधिक से अधिक तर्क से निपटने / पार्स करने में मदद मिलेगी।
काजार्क

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