ฉันจะบอกความสมบูรณ์ของการใช้แท็บให้ถูกต้องสำหรับการขัดแย้งกับสคริปต์ Python ของฉันได้อย่างไร


14

ว่าฉันมีโปรแกรม hello.py และมีข้อโต้แย้งที่ถูกต้องหนึ่งข้อคือ:

./hello.py autoawesomesauce

เป็นไปได้ที่จะพิมพ์:

./hello.py auto[tab]

ณ จุดนี้อาร์กิวเมนต์ที่เสร็จสมบูรณ์บางส่วนจะถูกส่งไปยัง hello ซึ่งรับรู้ว่ามันเป็นเช่นนั้น

./hello.py autoawesomesauce

ฉันรู้ว่า git ทำอะไรแบบนี้ แต่มันสามารถทำได้สำหรับ Python script + Bash หรือไม่?


4
สคริปต์ Python ไม่สามารถทำได้ ทุบตีต้อง

โหวตขึ้นเพื่ออะไรกันแน่?

คำตอบ:


7

บนระบบลินุกซ์, /etc/bash_completion.dคุณมักจะพบจำนวนมากตัวอย่างเช่นสคริปต์ใต้: หากคุณแหล่งสคริปต์เหล่านี้แล้วคุณจะได้รับพฤติกรรมการเติมข้อความอัตโนมัติ

ฉันได้รวมตัวอย่างจากไดเรกทอรีนั้นแล้ว นี่เป็นสคริปต์ที่เสร็จสมบูรณ์แล้วสำหรับ unrar

_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อะไร
e-info128

4

ฟังก์ชั่นนี้ไม่มีอะไรเกี่ยวข้องกับ Python นี่เป็นฟังก์ชันการทำงานที่แท้จริงของเชลล์ที่อยู่ภายใต้ ดังนั้นอ่าน bash docs เมื่อเติมข้อมูลอัตโนมัติ

Google สำหรับ "bash auto-completion" และคุณจะพบเอกสารที่เหมาะสมอย่างน้อย 5 รายการภายใต้ 10 อันดับแรก


ซึ่งหมายความว่าอาจเป็นความคิดที่ดีที่จะรวมสคริปต์ Python ของคุณไว้ในสคริปต์ Bash เพื่อให้สคริปต์ Bash สามารถจัดการ / แยกวิเคราะห์ได้มากที่สุด
Kazark

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.