GNUパラレルコマンドと出力を一緒に印刷するには?

GNUパラレルコマンドと出力を一緒に印刷するには?

parallel git -C {} status --short ::: ~/*/.git/..ただし、Git状態にはリポジトリ名やパスが含まれていないため、git実行されたコマンドを印刷するかparallel(理想的には)入力(~/[…]/.git/..コマンドの一部)を印刷してから、そのリポジトリに関連する出力を印刷する方法が必要です。可能ですか?--verboseコマンドは印刷しますが、その隣のコマンド出力は印刷しないため、十分ではありません。--groupジョブは行を一緒に保持しますが、印刷されたコマンドは保持しないため、この--verbose2つでは不十分です。

答え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ループほど遅くなります。
  • 入力内容の代わりにコマンド全体を印刷します。
  • --verbose2>&1stderrにコマンドを印刷するので、フィルタを介して出力を実行する必要があります。less

関連情報