別のディレクトリのファイルを一覧表示するようにbashオートコンプリートをカスタマイズする方法

別のディレクトリのファイルを一覧表示するようにbashオートコンプリートをカスタマイズする方法

1つのスクリプトオプション(-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

おすすめ記事