私が持っているとしましょう:
alias gg="git grep"
次に、次のようなものがあります。
gg "int x"
動作しますが
gg int x
苦情を受け取ります。ggをzshの関数として書き直して、ggの後のすべての引数を取り、それらを文字列に詰め込む方法はありますか?
ありがとう!
gg() { git grep "$*"; }
特定のユースケースでは、これは悪い考えです。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
これには、元のエイリアスで問題ありません。また、他の正規表現を受け入れるコマンドの場合と同じように、パターンを一重引用符または二重引用符で囲みます。