如何同时bash完成两个任意命令的输出

如何同时bash完成两个任意命令的输出

开始:

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" ) )

(仍然自动完成一个命令)。

相关内容