방금 stdin에서 작성한 내용을 stdout에 복사하여 붙여넣고 싶다면 리디렉션 >
또는 추가를 사용할 수 있습니다 >>
.
tee
stdin에서 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 filename
은tee
모델오류는 다양한 방법으로 처리될 수 있으며티파일 및 터미널에 쓰거나 추가할 수 있습니다. 가끔 사람들이 사용하는티터미널에서 명령의 출력을 보고 이를 파일에 저장하려고 하기 때문에 >/>>
그렇게 할 수 없습니다.