【问题标题】:zsh alias -> function?zsh 别名-> 函数?
【发布时间】:2011-01-11 13:42:08
【问题描述】:

假设我有:

alias gg="git grep"

然后是这样的:

gg "int x"

有效,但是

gg int x

收到投诉。有没有办法将 gg 重写为 zsh 中的函数,以便它获取 gg 之后的所有参数,并将它们填充到一个字符串中?

谢谢!

【问题讨论】:

    标签: zsh arguments


    【解决方案1】:
    gg() { git grep "$*"; }
    

    【讨论】:

    • 嗯,要将它们放入一个字符串中,您需要 "$*" 而不是 "$@" - 您编写的表单会将它们作为单独的参数传递,就像别名一样。
    • 这样的好处是也兼容 bash
    【解决方案2】:

    对于您的特定用例,这是一个坏主意。 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 是一个有价值的击键保护程序,你应该保持你的参数与git-grep 期望的一致。您的原始别名对此很好。并继续单引号或双引号,就像使用任何其他正则表达式接受命令一样。

    【讨论】:

      猜你喜欢
      • 2016-10-21
      • 2016-03-24
      • 2011-02-21
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多