現在のディレクトリではなく、ディレクトリを検索するために 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
機能するなど)。