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兼容