다른 디렉토리의 파일을 나열하도록 bash 자동 완성을 사용자 정의하는 방법

다른 디렉토리의 파일을 나열하도록 bash 자동 완성을 사용자 정의하는 방법

하나의 스크립트 옵션(-seq)에 대해서만 다른 디렉토리의 파일을 나열하도록 bash 자동 완성을 사용자 정의하는 방법, 다른 스크립트 옵션(-speed, -define)의 경우 기본 자동 완성은 괜찮습니다. 이것이 제가 가진 것입니다.

 export files=`ls /home/tests/`
 echo $files #debug     

 _xtest ()   {              
      local cur
      COMPREPLY=()     
      cur=${COMP_WORDS[COMP_CWORD]}
       #case "$cur" in
       COMPREPLY=( $(compgen -W "${files}" -- ${cur}) )
    #  esac
      return 0
    }

    complete -F _xtest -o filenames xtest

추가 옵션에 대해 기본 bash 완성을 활성화하는 방법은 무엇입니까?

답변1

cur 대신 Prev를 사용해야 합니다.

_xtest ()   {              
      local prev
      COMPREPLY=()     
      prev=${COMP_WORDS[COMP_CWORD-1]}
      case "$prev" in
       -seq )
          COMPREPLY=( $(compgen -W "${files}" -- ${cur}) ) ;;
      esac
      return 0
    }
complete -F _xtest -o filenames xtest

관련 정보