开始:
function _command() {
local cur
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
if [ "$COMP_CWORD" -ge "2" ]; then
COMPREPLY=($( compgen -W '$(pwd)' -- "$cur" ) )
else
COMPREPLY=($( compgen -W "arg1 arg2" -- "$cur" ) )
fi
}
complete -F _command command
只要我source
这样做,这效果很好。
如果我希望它自动完成 的输出pwd
和其他任意命令,例如,该怎么办hostname
?如果我还希望它在任何文件路径上自动完成怎么办?
答案1
任何一个
COMPREPLY=($(compgen -W '$(pwd)' -- "$cur") $(compgen -W '$(hostname)' -- "$cur"))
(你想要一个更大的数组,就做一个)或者
COMPREPLY=($( compgen -W '$(pwd; hostname)' -- "$cur" ) )
(仍然自动完成一个命令)。