假设我有:
alias gg="git grep"
然后就是这样的东西:
gg "int x"
代码可以运行,但是存在一些问题。
gg int x
我经常遇到一些抱怨,如何在zsh中将gg重写为一个函数,以便它可以接收所有紧随其后的参数,并将它们放入一个字符串中?
谢谢!
gg() { git grep "$*"; }
gg foo.*bar
或其他各种shell可能解释的内容时,它很快就会崩溃。因此,gg
后面的任何内容都应该被引用起来。这就是为什么git grep int x
也无法工作的原因:fatal: ambiguous argument 'x': unknown revision or path not in the working tree...
如果您认为`gg`是一个值得输入的快捷方式,那么您应该保持您传递给它的参数与`git-grep`所期望的参数一致。您最初的别名对此很好。并且继续像对待任何其他接受正则表达式的命令一样使用单引号或双引号引用您的模式。
"$*"
而不是"$@"
--你现在使用的形式会将它们作为单独的参数传递,就像别名一样。 - Phil P