Python 스크립트 인수에 대해 유효한 탭 완성 기능을 갖도록 bash에 어떻게 지시합니까?

Python 스크립트 인수에 대해 유효한 탭 완성 기능을 갖도록 bash에 어떻게 지시합니까?

hello.py 프로그램이 있고 가능한 유효한 매개변수 중 하나가 다음과 같다고 가정해 보겠습니다.

./hello.py autoawesomesauce

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

./hello.py auto[tab]

이 시점에서 부분적으로 완료된 인수가 hello로 전송되고 hello가 이를 인식하여 셸에서 완료합니다.

./hello.py autoawesomesauce

git이 비슷한 작업을 수행한다는 것을 알고 있지만 Python 스크립트 + Bash를 사용하여 수행할 수 있습니까?

답변1

Linux 시스템에서는 일반적으로 다음 위치에서 여러 샘플 스크립트를 찾을 수 있습니다 /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

답변2

이 기능은 Python과 관련이 없습니다. 이는 순전히 기본 쉘의 기능입니다. 따라서 자동 완성에 대한 bash 문서를 읽어보세요.

Google의 "bash 자동 완성"을 사용하면 처음 10개 히트 내에서 최소 5개의 합리적인 문서를 찾을 수 있습니다.

답변3

바라보다이것관련 StackOverflow 게시물.

complete 'your_command' 'p/*/`echo list_of_your_options`/'

관련 정보