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