Bash 완료: 다양한 소스의 결과를 별도로 표시합니다.

Bash 완료: 다양한 소스의 결과를 별도로 표시합니다.

나는 팔로우했다이 튜토리얼내 bash 완료 기능을 작성 중입니다. 이것은 훌륭하게 작동하지만 다른 소스의 완료를 별도로 표시할 수 있는지 알고 싶습니다.

get_dirs예를 들어, 디렉터리를 매개 변수로 사용하는 스크립트가 있고 가능한 디렉터리( 로 나열됨 ) 를 자동 완성하고 싶다고 가정해 보겠습니다 .

function _testing_command()
{
    local cur=${COMP_WORDS[COMP_CWORD]}
    local prev=${COMP_WORDS[COMP_CWORD-1]}

    case "$prev" in
        testing )
            COMPREPLY=( $(compgen -W "$(get_dirs)" -- $cur) )
            ;;
    esac
}
complete -F _testing_command testing

이것은 잘 작동하고 디렉토리를 올바르게 자동 완성합니다.

$ testing <TAB><TAB>
dir1 dir3 dir5
$ testing

하지만 이제 자동 완성 출력에 포함하려는 두 번째 디렉토리 세트( 로 나열)가 있는 경우 get_dirs_2어떻게 해야 합니까 ? 나는 다음을 할 수 있습니다 :

function _testing_command()
{
    local cur=${COMP_WORDS[COMP_CWORD]}
    local prev=${COMP_WORDS[COMP_CWORD-1]}

    case "$prev" in
        testing )
            COMPREPLY=( $(compgen -W "$(get_dirs) $(get_dirs_2)" -- $cur) )
            ;;
    esac
}
complete -F _testing_command testing

그러면 다음과 같은 출력이 제공됩니다.

$ testing <TAB><TAB>
dir1 dir2 dir3 dir4 dir5 dir6
$ testing

기술적으로는 괜찮습니다. 자동 완성 기능은 두 소스의 디렉터리 모두에서 작동하기 때문입니다. 그러나 출력이 어떤 디렉토리가 어떤 위치에서 왔는지 어떻게든 나타내기를 원합니다. 예를 들면 다음과 같습니다.

$ testing <TAB><TAB>
from loc1:
dir1 dir3 dir5
from loc2:
dir2 dir4 dir6
$ testing

출력 형식을 제어할 수 있나요? 아니면 유사한 기능을 달성하기 위해 완전한/compgen 기능을 사용할 수 없습니까?

관련 정보