web-dev-qa-db-ja.com

zshエイリアス->関数?

私が持っているとしましょう:

alias gg="git grep"

次に、次のようなものがあります。

gg "int x"

動作しますが

gg int x

苦情を受け取ります。 ggをzshの関数として書き直して、ggの後のすべての引数を取り、それらを文字列に詰め込む方法はありますか?

ありがとう!

32
anon
gg() { git grep "$*"; }
58

特定のユースケースでは、これは悪い考えです。 git-grepは単一引数を期待していますパターン。シェルにスペース(intとxの間)をパターンの一部として処理させようとしています。次のようなことを試みると、これはすぐに壊れます:gg foo.*barまたはシェルが解釈する可能性のあるその他のさまざまなもの。したがって、gg以降は実際に引用する必要があります。これが理由です git grep int xも機能しません:fatal: ambiguous argument 'x': unknown revision or path not in the working tree...

ggが価値のあるキーストロークセーバーであると思う場合は、それに対する引数をgit-grep期待します。これには、元のエイリアスで問題ありません。また、他の正規表現を受け入れるコマンドの場合と同じように、パターンを一重引用符または二重引用符で囲みます。

4
Micah Elliott