![명령의 출력을 표시하고 다음 명령에 전달하려면 어떻게 해야 합니까? [복사]](https://linux55.com/image/156510/%EB%AA%85%EB%A0%B9%EC%9D%98%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%ED%91%9C%EC%8B%9C%ED%95%98%EA%B3%A0%20%EB%8B%A4%EC%9D%8C%20%EB%AA%85%EB%A0%B9%EC%97%90%20%EC%A0%84%EB%8B%AC%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
출력(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
함수는 입력을 표준 오류에 씁니다.그리고 이를 다음 필터로 전달합니다. 그러나 개체의 형식을 지정하므로(강조 표시되지 않고 압축됨) 이는 원하는 것일 수도 있고 아닐 수도 있습니다.