web-dev-qa-db-ja.com

パラメーター付きのZSHエイリアス

単純なgit add/commit/Pushのパラメーターを使用してエイリアスを作成しようとしています。

Functionをエイリアスとして使用できるのを見たので、試してみましたが、作成しませんでした..

私が持っていた前に:

alias gitall="git add . ; git commit -m 'update' ; git Push"

しかし、私は私のコミットを変更できるようにしたい:

function gitall() {
    "git add ."
    if [$1 != ""]
        "git commit -m $1"
    else
        "git commit -m 'update'"
    fi
    "git Push"
}

(私はそれがひどいgitプラクティスだと知っています)

52
albttx

引数でエイリアスを作成することはできません*、それは関数でなければなりません。関数は近いので、コマンド全体ではなく特定の引数を引用し、[]内にスペースを追加するだけです。

gitall() {
    git add .
    if [ "$1" != "" ] # or better, if [ -n "$1" ]
    then
        git commit -m "$1"
    else
        git commit -m update
    fi
    git Push
}

*:ほとんどのシェルはエイリアスの引数を許可しません。cshと派生物は許可しますが、 とにかく使用すべきではありません

68
Kevin

何らかの理由でパラメータを持つエイリアスを本当に使用する必要がある場合は、エイリアスに関数を埋め込み、すぐに実行することでハッキングできます。

alias example='f() { echo Your arg was $1. };f'

このアプローチは.gitconfigエイリアスで多く使用されているようです。

54
joelpt

.zshrcファイルでこの関数を使用しました。

function gitall() {
    git add .
    if [ "$1" != "" ]
    then
        git commit -m "$1"
    else
        git commit -m update # default commit message is `update`
    fi # closing statement of if-else block
    git Push Origin HEAD
}

ここgit Push Origin HEADは、現在のブランチをリモートにプッシュする役割を果たします。

コマンドプロンプトから次のコマンドを実行します:gitall "commit message goes here"

コミットメッセージなしでgitallを実行すると、関数が言ったようにコミットメッセージはupdateになります。

5
Hasan Abdullah

"git add .""の間の他のコマンドはbashの単なる文字列です。"sを削除してください。

Ifボディで代わりに[ -n "$1" ]を使用したい場合があります。

4