3

我经常使用 R。在 R 中,您可以通过编写来调用函数的手册页

?print

我已经习惯了,以至于我也间歇性地在 bash shell 窗口中键入它。现在,我已经设置了一个别名

?='man'

几乎削减了它:例如,我可以做到? ls。但是,我更希望它与?ls. 不幸的是,这个不起作用。当我在没有空格的情况下键入问号时,有什么方法可以让 bash 调用手册页?

4

1 回答 1

11

bash提供了一个处理未定义命令的钩子。由于您不太可能拥有任何名称以 开头的命令?,因此您可以使用此挂钩来处理任何运行此类命令的尝试:

command_not_found_handle () {
    if [[ $1 =~ ^\? ]]; then
        cmd=${1#\?}
        man $cmd
    else
        echo "$1: command not found" >&2
        return 127
    fi
}

这个函数会进入你的.bashrc文件,所以它可以在任何 shell 中使用。当您尝试执行

$ ?ls

未找到命令,钩子拦截失败的查找命令尝试,确定命令名称以 开头?,然后剥离?并将结果作为参数传递给man。其他未定义的命令仅产生类似于未找到bash命令的默认错误的错误消息,并以状态 127 退出(相同的状态bash通常用于表示未找到命令)。

于 2012-10-12T14:04:07.133 回答