파이썬 스크립트에 대한 인수에 대해 유효한 탭 완성을 bash에 알리는 방법


14

hello.py 프로그램이 있고 유효한 인수가 하나 있다고 가정 해보십시오.

./hello.py autoawesomesauce

다음을 입력 할 수 있습니다 :

./hello.py auto[tab]

이 시점에서 부분적으로 완료된 인수는 hello로 전송되며이를 인수로 인식 한 후 쉘에서 다음과 같이 완료합니다.

./hello.py autoawesomesauce

git이 이와 같은 작업을 수행한다는 것을 알고 있지만 Python 스크립트 + Bash에 대해 수행 할 수 있습니까?


4
파이썬 스크립트는 할 수 없습니다. 강타해야합니다.

정확히 무엇에 대한 찬성?

답변:


7

Linux 시스템의 경우 일반적으로 다음에서 많은 수의 예제 스크립트를 찾을 수 있습니다 /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 auto-completion"에 대한 Google의 경우 첫 10 개의 조회수에서 최소 5 개의 합리적인 문서를 찾을 수 있습니다.


이는 파이썬 스크립트를 Bash 스크립트로 래핑하여 Bash 스크립트가 가능한 한 많은 인수 처리 / 파싱을 수행하도록하는 것이 좋습니다.
Kazark

0

관련 StackOverflow 게시물을 참조하십시오 .

complete 'your_command' 'p/*/`echo list_of_your_options`/'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.