微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 用“?”替换“man”

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

?print

我已经习惯了这么多,我也间歇性地在bash shell窗口中键入它.现在,我已经设置了一个别名

?='man'

这几乎可以削减它:例如,我能做到吗? LS.但是,我更喜欢它与?ls合作.不幸的是,这个不起作用.当我输入没有空格的问号后,有没有办法让bash调用手册页?

解决方法:

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通常用于表示未找到命令).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐