git-go
この端末回線にエイリアスを簡単に設定したい:
git commit -m "init "; git push; git status
したがって、git-goと入力すると、この行が入力されます。
どうやってやるの?私が見た答えは、パラメーターのないコマンドのエイリアスのみをカバーしています。しかし、任意の端末回線にエイリアスを設定したいと思います。
git-go
この端末回線にエイリアスを簡単に設定したい:
git commit -m "init "; git push; git status
したがって、git-goと入力すると、この行が入力されます。
どうやってやるの?私が見た答えは、パラメーターのないコマンドのエイリアスのみをカバーしています。しかし、任意の端末回線にエイリアスを設定したいと思います。
回答:
これは、エイリアスを設定するのと同じ方法で行います。
alias git-go='git commit -m "init "; git push; git status'
それがトリッキー取得状況はありませんエイリアスは、コマンドを実行し、そのコマンドに引数を渡し、またエイリアスは、複数のコマンドを実行した場合でも区切ったときに;
、代わりにあなたは、独自のコマンドライン引数を受け入れ、使用するエイリアスをしたいときです。
たとえば、そのエイリアスの名前の後に書き込んだものは最後に貼り付けられ、コマンドライン引数として3番目のgit
コマンドの後に渡されgit status
ます。(実際には、次のテキストがそのまま残され、エイリアス名がその定義に置き換えられるのと同じくらい、次のテキストが最後に貼り付けられることはそれほどありません。)
したがって、引数なしでエイリアスを実行できます。これは機能し、最後のコマンドはgit status
次のとおりです。
git-go
または、渡したい引数を指定して実行することもできますgit status
。たとえば、この方法で実行すると、最後のコマンドはgit-status --show-stash
次のようになります。
git-go --show-stash
Bash(およびその他のBourneスタイルのシェル)でエイリアスを使用してできないことは、エイリアスにコマンドライン引数を受け入れさせ、末尾以外の場所に配置させることです。
たとえばgit-go
、コミットメッセージに使用する引数を受け入れたいとします。これをエイリアスとして書き込むことはできません。解決策は、代わりにシェル関数としてそれを書くことです:
git-go() { git commit -m "$1"; git push; git status; }
シェル関数の定義では、位置パラメータ$1
、$2
などが、シェル関数に渡されるコマンドライン引数の値を保持します。エイリアス展開は実際にはマクロ処理の一種であり、シェルがコマンドを解析する非常に早い段階で行われるため、エイリアスにはこれに対応する機能はありません。
もちろん、Videonauthが示唆しているように、定義で定位置パラメーターを使用する必要がない場合でも、それをシェル関数として書くことができます。
git-go
は、PATHに名前が付けられたスクリプトを配置してgit go
動作することです。
次の~/.bash_aliases
ように、ファイル内で関数を宣言できます。
git-go(){
git commit -m "init "
git push
git status
}
または、次のように同じファイルにエイリアスを作成できます。
alias git-go='git commit -m "init "; git push; git status'
. ~/.bash_aliases
変更した後は、ターミナルを再度開くか、ファイル()を読み込むことを忘れないでください。
git
コマンドを処理しているときに、特にのエイリアスを追加するための構文も知りたい場合がありますgit
。
git config --global alias.go '!sh -c "git commit -m \"init\"; git push; git status"'
これにより、ローカルgit
構成(~/.gitconfig
)に新しいエイリアスが追加され、発行できるようになります
git go
git
リポジトリ内の場合。実行git go
すると必ずシェルが呼び出され、コマンドgit commit -m "init"; git push; git status
がシェルに渡されます。
詳細については、gitのドキュメント を参照してください。
それは引用問題でした。私はこれを試しました:
alias="git commit -m "init "; git push; git status"
しかし、このエラーが発生しました:
bash: ; git push; git status: command not found
ネストされた引用符を誤って使用していたため、このエラーが発生しました。正しい構文は次のとおりです。
alias='git commit -m "init "; git push; git status'
または:
alias="git commit -m 'init '; git push; git status"
または、コミットメッセージに空白がない場合は引用符なし:
alias="git commit -m init; git push; git status"
init
。シェル扱い'init'
、"init"
とinit
同じ。(したがって、元のバージョンを元に戻し、新しいバージョンを表示して、ネストされた引用符が必要な状況を示すことができます。)メッセージの残りの部分を追加できることについては、コマンドラインとして渡すことができます。 (Videonauthと私の回答に示されているように)エイリアスではなく関数を定義した場合の引数。たとえば、定義することができますgit-go() { git commit -m "init $1"; git push; git status; }
(これは私の答えにありますが、の"init $1"
代わりに"$1"
)。