zsh别名 - >函数?
问题描述:
假设我有:zsh别名 - >函数?
alias gg="git grep"
然后东西,如:
gg "int x"
作品,但
gg int x
得到投诉。有没有办法在zsh中将gg重写为一个函数,以便它将gg后面的所有参数重新写入一个字符串?
谢谢!
答
gg() { git grep "$*"; }
答
对于您的特定用例,这是一个坏主意。 git-grep
预计单个参数模式。你试图让shell把你的空间(在int和x之间)作为模式的一部分。当你尝试类似这样的东西时,这会很快中断:gg foo.*bar
或shell可能解释的其他各种东西。所以gg
之后的任何内容都应该引用。这就是为什么git grep int x
也不起作用:fatal: ambiguous argument 'x': unknown revision or path not in the working tree...
如果你认为gg
是一个值得按键保护程序,你应该让你的ARG把它与什么git-grep
预期一致。你的原始别名对此很好。并继续单引号或双引号,就像使用任何其他正则表达式接受命令一样。
+0
不是一个答案,而是一个很好的观点。 – shadowtalker 2015-06-13 16:22:06
嗯,让他们进入一个字符串,你需要'“$ *”',而不是'“$ @”' - 你写将通过将它们作为单独的参数,可以就像别名的形式。 – 2010-03-16 20:08:14
感谢您的更正。 – 2010-03-16 22:04:19
这也有与bash兼容的好处 – Jian 2013-05-31 16:31:57