【问题标题】:Unable to unbind a shell function无法解除绑定 shell 函数
【发布时间】:2010-11-06 10:11:54
【问题描述】:

本题基于the thread

我有shell函数

function man()
{       
    man "$1" > /tmp/manual; less /tmp/manual 
}

问题是存在man命令。

如何用我的命令替换命令?

【问题讨论】:

    标签: manpage less-unix


    【解决方案1】:

    将 man "$1" 替换为路径名:/usr/bin/man。或将其更改为在反引号中使用“哪个人”。然后在当前 shell 中运行你的脚本。在 bash/ksh 上,您需要将脚本保存在某个文件中,比如 man.sh,然后将其作为 '. ./man.sh'。

    cat > man.sh
    function man()
    {       
        /usr/bin/man "$1" > /tmp/manual; less /tmp/manual 
    }
    ^D
    
    . ./man.sh
    

    你明白了。你可以随时取消定义函数:unset -f man

    【讨论】:

    • 哦,另一件事。您可能想在函数中使用“$*”而不是 $1。
    • "$*" 似乎更喜欢 1,2,3,... 中的所有参数,这可能很有用。但是,我无法理解您如何阅读 % man emacs vim % 的手册
    • 好吧。当你使用 man -3C printf 时,$* 会很有用。然后,您的函数将支持传统人的所有语义。如果你运行 man emacs vim,你可以通过在我的系统上输入 q 跳到下一个 man。
    • @Ryan:我使用 OS/X。它没有选项-3C:它的目的是什么? --- "$*" 不像你在 OS/X 中描述的那样工作。我也没有成功运行“$1”“$2”。 --- 请您解释一下如果我不使用 $* 会错过哪些功能。
    • OS/X 有 man -S 来指定部分。另请查看rose-hulman.edu/~defoe/HowTo/index.html 的快速介绍。祝你好运。
    猜你喜欢
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    相关资源
    最近更新 更多