tee는 리디렉션/추가와 어떻게 다릅니까?

tee는 리디렉션/추가와 어떻게 다릅니까?

방금 stdin에서 작성한 내용을 stdout에 복사하여 붙여넣고 싶다면 리디렉션 >또는 추가를 사용할 수 있습니다 >>.

teestdin에서 stdout으로 쓰는 것의 차이점은 무엇입니까?

답변1

tee입력이 있고출력(따라서 파이프에 사용된 티 구성 요소 뒤에 이름이 지정됨). 리디렉션을 위한 입력을 사용 >하거나 보유합니다.>>하나산출.

다음을 사용하여 tee표준 입력을 리디렉션할 수 있습니다 .둘 다표준 출력으로그리고(두 번째 사본)을 매개변수로 지정된 파일에 tee. 리디렉션 >하거나 >>해당 작업을 수행할 수 없습니다.

예를 들어, 다음을 입력하면:

ls -l | tee file-list

터미널에 디렉토리 목록이 표시됩니다.그리고파일에도 복사됩니다 file-list. 하지만 입력하면

ls -l > file-list

스토어 디렉토리 목록오직파일에는 file-list터미널에 출력이 없습니다.

답변2

이 질문을 하는 맥락이 중요합니다.

예:

cat one_file > another_file

이렇게 하면 cat아무 것도 열리지 않습니다 another_file. 쉘은 다른 파일을 열고 표준 출력을 cat해당 파일로 설정합니다.파일 설명자.

루트 권한이 필요한 파일에 쓰려고 하면 문제가 발생할 수 있습니다. 그래서 이것은 아마도 작동하지 않을 것입니다.

sudo echo 1 > /some/root/owned/file

위 셸은 /some/root/owned/file실행 전에 열려고 시도했지만 sudo권한이 없습니다.

이것이 작동하는 곳:

echo 1 | sudo tee /some/root/owned/file

tee이는 루트로 실행 중이고 tee이 컨텍스트에서 파일이 열리기 때문입니다 . 껍질이 아니다

답변3

>, >>출력을 파일로 사용하는 것과 파일로 리디렉션하는 것의 차이점 command | tee -a filenametee모델오류는 다양한 방법으로 처리될 수 있으며파일 및 터미널에 쓰거나 추가할 수 있습니다. 가끔 사람들이 사용하는터미널에서 명령의 출력을 보고 이를 파일에 저장하려고 하기 때문에 >/>>그렇게 할 수 없습니다.

관련 정보