zsh别名->;功能?

zsh别名->;功能?,zsh,arguments,Zsh,Arguments,假设我有: alias gg="git grep" 然后像这样的事情: gg "int x" 有效,但是 gg int x 收到投诉。有没有一种方法可以将gg重写为zsh中的函数,这样它就可以将gg后面的所有参数都填入字符串中 谢谢 对于您的特定用例,这是一个坏主意git grep需要一个arg模式。您试图让shell将您的空格(int和x之间)视为模式的一部分。当您尝试类似于:gg foo.*bar或shell可能解释的各种其他内容时,这将很快中断。所以gg之后的任何内容都应该被引用。这

假设我有:

alias gg="git grep"
然后像这样的事情:

gg "int x"
有效,但是

gg int x
收到投诉。有没有一种方法可以将gg重写为zsh中的函数,这样它就可以将gg后面的所有参数都填入字符串中


谢谢

对于您的特定用例,这是一个坏主意
git grep
需要一个arg模式。您试图让shell将您的空格(int和x之间)视为模式的一部分。当您尝试类似于:
gg foo.*bar
或shell可能解释的各种其他内容时,这将很快中断。所以
gg
之后的任何内容都应该被引用。这就是为什么
git grep int x
也不起作用的原因:
致命:参数“x”不明确:未知修订或路径不在工作树中…

gg() { git grep "$*"; }

如果您认为
gg
是一个值得的击键保护程序,那么您应该让您的arg与
git grep
所期望的保持一致。您的原始别名可以用于此。然后继续单引号或双引号引用您的模式,就像您对任何其他正则表达式接受命令所做的那样。

Uhm,要将它们放入一个字符串中,您需要
“$*”
而不是
“$@”
——您编写的表单将作为单独的参数传递,就像别名一样。这还有一个好处,就是与bash兼容