Bash 완료 동적 동작

Bash 완료 동적 동작

사용 상황에 따라 "탭"의 두 가지 동작을 원합니다. 사용자가 "mybashfunction" 명령의 인수를 완료하려고 할 때를 제외하고 언제든지
기본 동작을 유지하고 싶습니다 . 이 경우 완성을 생성하기 위해 특수 함수를 호출하지만 "탭"이 설정된 bind '"\t":complete'것처럼 작동하고 싶습니다 .bind '"\t":menu-complete'

답변1

나는 그 readline 라이브러리가 한 번에 한 종류의 탭 완성 동작만 지원한다고 믿습니다.

답변2

이것이 당신이 찾고 있는 것인가요?Bash: 몇 가지 일치 항목에 대해서만 메뉴 완료

답변3

bash 전체 규칙을 사용하면 이를 달성할 수 있습니다.

_myfunc() {
    _opts="zero one two"
    # COMPREPLY is bash built-in for array of possible completions
    COMPREPLY=()
    # cur & prev are current & previous words typed in shell
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    COMPREPLY=( $( compgen -W "${_opts}" -- ${cur} ))
    return 0
}
complete -F _myfunc myfunc

이것은 bash의 정상적인 완료에는 영향을 미치지 않지만 완료 myfunc를 탭하면 가능한 완료로 "0 1 2"가 표시됩니다.

편집: 아 예, 이것을 bashrc 또는 이와 유사한 곳에 넣어서 새 쉘에서 소스를 얻으세요.

관련 정보