명령의 출력을 표시하고 다음 명령에 전달하려면 어떻게 해야 합니까? [복사]

명령의 출력을 표시하고 다음 명령에 전달하려면 어떻게 해야 합니까? [복사]

출력(STDOUT)을 표시하고 이를 다음 명령으로 파이프하고 싶습니다. "tee"는 결과를 표시하고 파일에 기록한다는 것을 알고 있지만 파일에 기록하려면 다른 명령으로 파이프하고 싶습니다.

예:

$ command1 --option1 --option2 | MAGICCOMMAND | jq -e '.returnCode'

"command1 --option1 --option2" 및 "jq -e ..."의 출력을 얻습니다.

답변1

bash셸 에서는 tee다음과 같이 프로세스 대체를 사용할 수 있습니다.

command1 --option1 --option2 | tee >( jq -e '.returnCode' )

command1그러면 의 출력이 에 기록되고 tee의 표준 입력뿐만 아니라 표준 출력에도 복사됩니다 jq.

당신은 또한 이것을 할 수 있습니다

command1 --option1 --option2 | tee /dev/stderr | jq -e '.returnCode'

그러면 출력 command1표준 오류 스트림, 반복되는 출력을 로 전송하는 동안 jq달성하려는 목표에 따라 다릅니다.

답변2

| tee /dev/tty |대부분의 시스템에서 표준 입력을 콘솔에 기록하는 동시에 다음 명령에 표준 출력으로 전달합니다.

때로는 /dev/stderr표준 오류에 쓰는 것을 선호할 수도 있습니다. 특히 jq의 경우 이것으로 충분할 수 있습니다.

| jq 'stderr | ...' 

이것stderr/0함수는 입력을 표준 오류에 씁니다.그리고 이를 다음 필터로 전달합니다. 그러나 개체의 형식을 지정하므로(강조 표시되지 않고 압축됨) 이는 원하는 것일 수도 있고 아닐 수도 있습니다.

관련 정보