파일 대신 stdout으로 중간 결과를 출력하려면 tee를 사용하십시오.

파일 대신 stdout으로 중간 결과를 출력하려면 tee를 사용하십시오.

처리의 중간 단계에서 파이프의 내용을 캡처하기 위해 tee 를 로 사용한다는 것을 알고 있습니다 ls /bin /usr/bin | sort | uniq | tee abc.txt | grep out. 하지만 파이프를 리디렉션하고 싶지 않은 경우 어떻게 해야 합니까?uniq 뒤의 내용은 abc.txt입니다. 하지만 화면에(물론 stdout을 통해) 최종 결과는 다음과 같습니다.uniq 뒤의 중간 내용과 grep 뒤의 내용을 화면에 표시하겠습니다.

답변1

때로는 /dev/tty를 사용할 수도 있습니다...

ls /bin /usr/bin | sort | uniq | tee /dev/tty | grep out | wc

답변2

ls /bin /usr/bin | sort | uniq | tee /dev/fd/2 | grep out | wc

Linux 시스템에서는 /dev/fd/[num]대부분의 경우 명명된 파이프와 같은 링크를 사용할 수 있습니다. 그러면 stdout이 stderr(일반적으로 터미널)로 복사됩니다.화면, 하지만 꼭 그럴 필요는 없습니다.

답변3

방법(예):

exec 3>&1; ( ls |( tee >&3 ) >/dev/null ); exec 3>&-

그러면 ls 결과가 표시됩니다.그리고열반으로 보내십시오.

3>&1읽을 수 있는 주요 부분을 이해하려면입력/출력 리디렉션특히. 이것.

간단히 말해서: >somefile은 의 약어로 1>somefile, 이는 다음을 의미합니다.somefile의 파일 핸들을 파일 설명자 1에 할당합니다(그리고 이 프로세스 범위에 대해 해당 설명자의 이전 값을 삭제합니다)..

따라서 3>&1이는 다음을 의미합니다.파일 설명자 1(tty일 수 있지만 반드시 그럴 필요는 없음)을 (지금까지 사용되지 않은) 파일 설명자 3에 할당합니다.. 우리는 이를 &3임시 변수 로 효과적으로 사용합니다 .

답변4

이 명령은 나에게 효과적입니다.

ls /bin /usr/bin | sort | uniq | tee /dev/pts/0 | grep out

이 명령을 사용하여 터미널이 무엇인지 확인 tty하고 tee를 교체하여 출력을 해당 터미널로 리디렉션할 수 있습니다.

인용하다

https://stackoverflow.com/a/18025293/1742825

관련 정보