无法解除绑定 shell 函数
Posted
技术标签:
【中文标题】无法解除绑定 shell 函数【英文标题】:Unable to unbind a shell function 【发布时间】:2010-11-06 10:11:54 【问题描述】:本题基于the thread。
我有shell函数
function man()
man "$1" > /tmp/manual; less /tmp/manual
问题是存在man命令。
如何用我的命令替换命令?
【问题讨论】:
【参考方案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 的快速介绍。祝你好运。以上是关于无法解除绑定 shell 函数的主要内容,如果未能解决你的问题,请参考以下文章