如何自定义bash自动完成以列出另一个目录中的文件只有一个脚本选项(-seq),对于其他脚本选项(-speed,-define),默认自动完成是O.K.这就是我所拥有的
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
当我尝试从shell运行时,我在文件列表
之前得到以下消息> xtest -seq [TAB][TAB]
bash: .: filename argument required
.: usage: . filename [arguments]
有没有办法在文件列表之前不接收此消息?
如何为其他选项启用默认bash完成?
答案 0 :(得分:0)
应该使用$ prev而不是$ cur:
_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