将"man"替换为"?"



我经常使用R。在 R 中,可以通过编写

?print

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

?='man'

几乎削减了它:例如,我可以做? ls.但是,我希望它与?ls一起工作。不幸的是,这个不起作用。有没有办法让我在键入问号时调用手册页,后面没有空格?

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通常用于表示未找到命令的状态相同)。

相关内容

  • 没有找到相关文章

最新更新