如何查看 bash 中命令的制表符完成功能?

如何查看 bash 中命令的制表符完成功能?

我最终想要别名screen -r

我之所以想这样做,主要是因为该命令具有出色的 Tab 补全功能,可以向我显示当前的 GNU 屏幕会话。我希望使用别名来实现这一功能。

这让我想问一个更普遍的问题。我如何查看命令screen -r或任何命令的 Tab 补全功能?

答案1

好的,这个问题涉及三件不同的事情:

1) 查找命令的 bash 补全功能complete -p <command>即可。在本例中,complete -p screen结果为complete -o default -F _screen screen

2) Bash 补全将接受参数。在 的情况下screen -rscreenbash 补全函数被调用并-r作为参数。然后您可以从那里有条件地自动完成。

3)在Ubuntu上,/etc/bash_completion.d/screen定义了屏幕完成功能。

因此,我为完成函数设置别名并保留它的方式screen -r如下。

.bashrc:

alias scr="screen -r"
function _complete_scr() {
    local does_screen_exist=$(type -t _screen_sessions)
    local cur=$2 # Needed by _screen_sessions
    if [[ "function" = "${does_screen_exist}" ]]; then
        _screen_sessions "Detached"
    fi
}
export -f _complete_scr
complete -F _complete_scr -o default scr

相关内容