我在使用compgen
shell 内置时遇到了两个困难。我尝试用简单的类似 bash_filedir
的(使用ls
)代码来展示它:
_myfiledir(){
path="$cur"
prefix=`echo /$path | grep -o "[0-9a-Z\-+_/]*/"`
sufix=`echo /$path | grep "/[0-9a-Z\-+_]*$" | grep -o "[0-9a-Z\-+_]*$"`
res=`ls -p $prefix`
COMPREPLY=($( compgen -o nospace -W "$res" -- $sufix ))
}
在这种情况下,当cur=="usr/li"
thenprefix=="/usr/"
和sufix=="li"
我有两个困难。有空间和更换。例如:
$ script usr/li[TAB]
我得到:
$ script lib/ <- additional space here
我需要:
$ script usr/lib/ <- no space here
此代码仅作为示例。