。parallel git -C {} status --short ::: ~/*/.git/..
ただし、Git状態にはリポジトリ名やパスが含まれていないため、git
実行されたコマンドを印刷するかparallel
(理想的には)入力(~/[…]/.git/..
コマンドの一部)を印刷してから、そのリポジトリに関連する出力を印刷する方法が必要です。可能ですか?--verbose
コマンドは印刷しますが、その隣のコマンド出力は印刷しないため、十分ではありません。--group
ジョブは行を一緒に保持しますが、印刷されたコマンドは保持しないため、この--verbose
2つでは不十分です。
答え1
努力する:
parallel --tagstring {//} git -C {//} status --short ::: ~/*/.git
または:
parallel --plus --tagstring {=s:$HOME.::';s:/.git::'=} git -C {//} status --short ::: ~/*/.git
または:
parallel -v git -C {//} status --short ::: ~/*/.git
これはまさにあなたが要求したものではありませんが、許容可能な解決策かもしれません。
お客様のニーズに合ったソリューションは次のとおりです。
parallel "echo {};git -C {} status --short" ::: ~/*/.git/..
答え2
parallel --group --jobs=1 --verbose […]
コマンドを印刷してからコマンド出力を印刷し、次のコマンドを続行します。欠点:
- どのコマンドも並行して実行されないため、
for
ループほど遅くなります。 - 入力内容の代わりにコマンド全体を印刷します。
--verbose
2>&1
stderrにコマンドを印刷するので、フィルタを介して出力を実行する必要があります。less