同様の質問がありましたが、私はUnix
に慣れていないため、状況が原因で答えが明確ではありませんでした。私がやりたいのは、あるコマンドの出力を引数として別のコマンドに渡すことです。私はソース管理にgitを使用しており、3つの異なるブランチで作業しています。
コミットする必要があるときはいつでも、ブランチをチェックしてから、対応するコマンドを次のように指定する必要があります。
git pull --rebase Origin <branch-name>
エイリアスをgit-rebase
として記述したかったのですが、最初にgit branch
を実行します。
Gitブランチの出力は次のようになります
experiment
*master
new feature
したがって、マスターブランチに加えて2つのブランチがある場合、すべてのブランチが表示され、現在のブランチにスターマークが付けられます。星印の付いた線を抽出し、その出力を上記のコマンドに渡します。
また、コマンドgit branch
の出力を抑制したいと思います。コマンド全体を入力するのが面倒なので、これを行っていませんが、unixbashの機能について詳しく知りたいからです。それから何かを学びたい
まず、git branch
出力を使用可能な形式にマッサージする必要があります
$ git branch
experiment
* master
new feature
$ git branch | awk '/^\* / { print $2 }'
master
ここで、それを引数として使用します。
$ git pull --rebase Origin $(git branch | awk '/^\* / { print $2 }')
(または、psusiの回答のようにバッククォートを使用できます)。
これshould大丈夫です。awkコマンドは常に正確に1行に一致する必要があり、ブランチ名にスペースを含めることはできないと思います。もっと複雑なことについては、おそらくそれを関数(またはスクリプト)にラップして、中間値のサニティチェックを実行できるようにします。
xargs
コマンドもあります。
xargs - build and execute command lines from standard input
したがって、@ Uselessからの上記の回答は、次のように変換されます。
git branch | sed -ne 's/\*//p' | xargs git pull --rebase Origin
いくつかの方法があります。最も簡単なのは、バッククォートの置換です。
git pull --rebase Origin `git branch | sed -ne 's/\*//p'`