GNU 병렬 명령과 출력을 함께 인쇄하는 방법은 무엇입니까?

GNU 병렬 명령과 출력을 함께 인쇄하는 방법은 무엇입니까?

. parallel git -C {} status --short ::: ~/*/.git/..​그러나 Git 상태에는 저장소 이름이나 경로가 포함되어 있지 않으므로 git실행된 명령을 인쇄 parallel하거나 (이상적으로는) 입력( ~/[…]/.git/..명령의 일부)을 인쇄한 다음 해당 저장소와 관련된 출력을 인쇄하는 방법이 필요합니다. 가능합니까? --verbose명령은 인쇄하지만 그 옆에 있는 명령 출력은 인쇄하지 않으므로 충분하지 않습니다. --group작업에서 줄을 함께 유지하지만 인쇄된 명령은 유지하지 않으므로 이 --verbose두 가지로는 충분하지 않습니다.

답변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

관련 정보