いくつかのパラメータを使用してzsh / bashマクロを生成する方法

いくつかのパラメータを使用してzsh / bashマクロを生成する方法

gitを助けるためにいくつかの機能/エイリアスを作成したいのですが、.zshrc方法がわかりません。

最初:

完全なコマンド:git commit -s -m "My message"

私が望む最終結果:gsc -m "My message"

第二:

完全なコマンド:git commit -s -a -m "My message"

私が望む最終結果:gsca "My message"

ご覧のとおり、私は部分引数を使用して何かを呼び出し、このマクロ呼び出しのソースに関係なく、他のすべての引数を受け入れることができるマクロが必要です。

私が試したこと:

  1. function gsc() { git commit -s $@; }
  2. alias gsc='git commit -s'

これらのどれも機能しません。

私のテスト:

> gsc -a -m "test"
On branch main
Your branch is up to date with 'origin/main'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    smth.txt

nothing added to commit but untracked files present (use "git add" to track

ベストアンサー1

ここで:

function gsc() { git commit -s $@; }

使用引用しない $@つまり、関数のすべての引数がトークン化されます。たとえば、呼び出しは、引数、、、および、つまりシェルコマンドラインの親を実行したかのように、コミットメッセージを別の引数に分割する必要がある項目として呼び出されgsc -m "hello there"ます。gitcommit-s-mhellotheregit commit -s m hello there

拡張子を"$@"。また、function foo標準foo()。だから:

gsc() { git commit -s "$@"; }

一方、エイリアスは

alias gsc='git commit -s'

動作しなければならないようです。エイリアスは構文解析される前にコマンドラインの内容のみを置き換えるので、それとまったくgsc -m "hello there"同じでなければなりませんgit commit -s -m "hello there"

テスト時にエイリアスと関数の両方を定義していないことを確認したい場合があります。これは明らかに混乱を引き起こすでしょう。

おすすめ記事