2

現在のディレクトリではなく、ディレクトリを検索するために bash tab-complete を有効にしたい。

たとえば、次のようにします。

$ ls $P
dirs/ are/ here/
$ cd /not/the/P/path
$ ls
other/ stuff/
$ myProg <tab>
dirs/ are/ here

これにより、通常は現在のディレクトリにファイルが表示される通常の動作が変更されます。

デューデリジェンス:私が思いつく最高のものは次のとおりです。

_myProg ()
{
  local cur

  COMPREPLY=()
  cur=${COMP_WORDS[COMP_CWORD]}

  if [ "${P}x" = "x" ]; then
    return 1
  fi

  case "$cur" in
    *)
      pth=${P}/$( echo $cur | egrep -o "^.*/[^/]*$" )
      COMPREPLY=( $( compgen -W "$( cd $pth && ls -1d "$cur"* 2>/dev/null -- "$cur" )" ) )
      ;;
  esac

  return 0
}
complete -o nospace -F _myProg myProg

最初はディレクトリが表示されますが、必要な方法でディレクトリにドリルダウンすることはできません(ls機能するなど)。

4

2 に答える 2

0

$CDPATHお役に立ちますか?高度な Bash スクリプト作成ガイドを参照してください。

于 2012-09-21T16:10:24.580 に答える
0
_myProg()
{
    COMPREPLY=($(cd $P; compgen -f $2))
}
complete -onospace -F_myProg myProg
于 2013-11-20T12:24:09.557 に答える