의 목적은 무엇인가'티'?
모든 용도의tee
본은 있었다:
do_something | tee -a logfile
또:
do_something_else | tee logfile
는티
발명 사람들을 위해지 않는't 알고 당신과 같은 작업을 수행 할 수 있습 쉘 파이프 리다이렉션? 와 같은:
do_something >> logfile
또:
do_something_else > logfile
It's 거의 동일하고 그것은 덜 키보드 숙박을 타입니다. 무슨 숨겨진 기능을 나는 보지 않는티
?
91
10
무't 는
do_something|티-로그파일
넣으로 출력을logfile
과를 표준출력으로 출력하는 동안,do_something>>logfile
그것을 둔****만로 logfile.의 목적은
tee
을 생산하는 것입 한 개의 입력,여러 개의 산출 시나리오에는'T'크로싱도 있습니다.편집
가 있었다 의견의 주위에 어떻게
티
가능하게 합 seemless 의 사용에sudo
. 이것은 옆에 있는 포인트:고양이
,dd
나 어쩌면 더 나은buffer
이것을 제공 가능성은 더 나은 성과를 가진 경우,don't 필요 여러 개의 출력이 있습니다. 사용tee
그것이 무엇인지에 대한 설계,아니한 것"할 수 있"Tee
쓸모가 없어쩌면 당신은 알고 있었을까요? 하지 않을 경우에 읽기! 는 경우 또는 어떻게 작동하는지 알고 있지만,아't 확왜그것이 존재하고,건너뛰기 종료를 어떻게 맞서 유닉 철학입니다.
무슨**의 목적은
tee
?에서 가장 간단한 걸리는 데이터는 표준 입력 및 쓰기를 표준출력과 표준 중 하나는(혹은 많이)파일이 있습니다. 그에 비유[티 배관 조](https://en.wikipedia.org/wiki/Piping_and_plumbing_fitting#Tee 에서)이 방법은 분할의 입력으로 두 개의 출력(두 방).
예제
Let's 의 첫 번째 예제:
이것은 출력의
do_something
에 추가합 logfile 하는 동안,또한 표시하고 있습니다. 사실,Wikipedia 페이지에서티
이라는 두 번째 예제:다음 예제는 다른 사용:에스컬레이션의 권한:
또는 아마도 당신을 하나의 명령 출력을 쓰는 것이 어딘가에 사용되는 입력으로 다른 명령은?
(신용티 명령을 사용 예)
Tee
작품으로 유닉스의 철학:(신용의 기초를 Unix 철학)
tee
에 맞는 모든 이들의:-그것은 하나의 일을 생성하는 여분의 복사본을 입력 -그것은 다른 프로그램이기 때문에 그것은 접착제(또는'T'배관 조각을 선호하는 경우)할 수 있는 다른 프로그램으로 함께 작업에서 위의 예제 -그것은 이것을 조작하여 텍스트 스트림을 주어서 표준 입력
그것은 동일하지 않습니다.
다음과 같은 나타나 다소에 해당하지만,그들은 그'다시되지 않:
중요한 차이점은 전자가 작성된 데이터에만 이라는 파일에,후자는 서면"안녕"터미널(
표준
)and이라는 파일에 다음과 같습니다:tee
을 작성할 수 있는 데이터 파일 and 에서 사용하는 이후 파이프라인할 수 있을지 유용한 것처럼 유지하는 데이터에서 도중에을 통해 파이프라인:또는,당신은 당신할 수 있는 파일에 쓰기 권한을 상승을주지 않고,전체 파이프라인 높은 권한을 사용하여(여기
에코
이라는 이름으로 사용자는티
기록을 파일로root
):는
티
,쓰기를 할 수 있는 많은 파일(and표준
):It's 를 사용하는 것도 가능하
exec
는티을 기록하는
전의 모든 스크립트's 파일로 출력을 허용하면서 관찰자(표준
)데이터를 확인하십시오:이것은 티:
T-자형 파이프 피팅입니다. 그것은 입구 및 별도의 두 아울렛 등이 있습니다. 다시 말해서,그것은 분할을 하나의 파이프로 같은 포크 road.
마찬가지로,
tee
이 파이프(|
)할 수 있는 리디렉션하는 표준 입력은 두 가지 별도의 출력이 있습니다.예 말 예를 들어,당신은 종류
ls/
. You'을 얻을 것 출력이 다음과 같은:리디렉션은 텍스트 파일로 출력을,
ls/>ls.txt
하고,출력이 표시되지 않 쉘에서 만에 결과 텍스트 파일입니다.보고 싶은 출력,그리고 그것을 통과하는 텍스트 파일로에서 동일한 시간입니까? 추가
티 선택할 수 있는 최고의 파이프(
|)ie:
ls/|티 ls.txt`비교 두:
No. 당신이 언급하 하나의 몇 가지 예입할 수 있는 실제로 리디렉션을 사용하여 파일의
>
과>>
연산자입니다.하지만 티은 더 많은 작업을 수행 할 수 있습니다. 기 때문에 관하여 그것은 다음을 할 수 있습니다 파이프를 다른 뭔가가 있습니다.
좋은 예를 들어에 나열된wikipedia 페이지:
기본적으로,파이프로 연결할 수 있 티할 수 있도록 다음 파이프 티에서 다른 무언가이다. 만약 당신이해야 할 모든 당신이 쓰기 로그 파일,네,그런 너는't 이 정말로 필요합니다.
tee
은 지역에 쓸모가 없다. 내가 사용하는 그것의 모든 시간이 기쁩니다. It's 매우 유용한 도구가 있는 경우는 파이프라인을 분할하고 싶습니다. 매우 간단한 예제는 어떤 디렉토리$d
하려는 타르고 당신은 또한 해시기 때문에 그것을 당신이'다시 편집증은(I)그리고 don't 신뢰 저장 매체를 보유 데이터를 안정적으로. 당신수 있그것을 작성하여 디스크에 처음 해시 그것은,그러나는'd 이 실패하는 경우 아카이브가 손상되기 전에 그's hashed. 또한,당신은 당신이'd 은 그것을 읽어야하고 작업하는 경우에는 파일은 여러 가지 백 GB 크기에 많이,당신은 알게 될 것이다 당신은 정말 don't 하려는 그들을 다시 읽지 않는 경우't 을 수 있습니다.그래서 어떻게 하는 것은 단순히 이:
성 타르 볼 및 파이프에 그것은 티는 다음 파이프 그것은 두 개의 서브 포탄,중 하나는's 는 해시된 기타의 it's 작성하여 디스크에 있습니다.
It's 는 경우에도 좋은 당신이 원하는 여러 가지 작업을 수행하에 큰 파일:
을 읽는 파일에 한 번,그것은 해시(그래서 당신은 여부를 확인할 수 있습 it's 는 여전히 그대로 이어야 한다),추출,그것을 복사 다른 위치에 있습니다. 을 읽을 필요가 없이 그것을 위해 세 번니다.
Nitpick 에@bertieb's 응답하는 말이 예제는 티하는 데 사용되는 바이패스는 고유한 제한 sudo 명령입니다. sudo 할 수 없는 관을 표준 출력하는 파일입니다.
이 없는 고유의 제한,다만 오해하는 방법의 명령을 처리됩니다.
예제:
sudo echo0>/proc/sys/net/ipv4/ip_forward
는쉘을 분석합니다. 견 출력을 리디렉션을 수행합니다. 다음 명령을 실행하는
sudo
제공하고 나머지 명령 라인에 인수로 실행되는 명령입니다. 는 경우 현지 않은 루트 권한이 다음 출력을 리디렉션은 실패합니다.echo0|sudo 티/proc/sys/net/ipv4/ip_forward
이 작품이기 때문에 출력을 리디렉션은 연기를
티
명령에는 루트 권한이기 때문에 그것이 실행되었을 통해sudo
.sudo bash-c"echo0>/proc/sys/net/ipv4/ip_forward"
이 작품이기 때문에 포탄을 리디렉션에는 루트 권한이 있습니다.
으로 다른 사람들도 언급된,파이프에 출력하는
티
명령을 쓰는 출력을 모두 파일을 stdout.내가 자주 사용하는
티 때
나는 캡처하려는 출력에서 명령이 오래 걸리는 시간을 실행하는 동안,또한 원하는 검사를 시각적으로 출력을 명령으로 그것이 가능합니다. That way,I don't 을 기다려야에 대한 명령을 완료하기 전에 실행하여 출력한다.무엇't 것을 언급되었는지 아직(지 않는 한 나는 그것을 놓쳤),는
티
명령할 수 있도 작성하여 여러 파일에 한 번. 예를 들어:이 쓰는 모든
*.png
파일을 현재 디렉토리에 두 개의 서로 다른 파일을(a.txt
및b.txt
)한 번에.에서 사실을 텍스트를 입력 할 수있는 여러 가지 다른 파일을 한번에
tee
다음과 같다:가장 일반적인 사용 티은 텍스트에서는 터미널에서 동일한 시간을 보내는 파일(). 의 표현의 문서 당신은 이제까지 쓰기 텍스트를 logfiles. 나는 스크립트는 목록을 작성의 파일 또는 디렉토리 이름을 트리거한 파일(에서 처리할 다른 스크립트를 비동기적으로)그리고 내가 사용하여 티을 보낼 경우에도 동일한 콘텐츠를 stdout. 모든 표준은 지시 로그입니다. 그래서 나는 나의 텍스트를 원하는 곳에 그것이 내가 로그 항목을 기록했는데,이것에서 모든 단'echo'statement
티한 최선의 방법에서 유닉을 만들기 위한 여러 개의 동일한 파일이 있습니다. 내가 사용하는 때때로 만들기 위한 여러 빈 파일,다음과 같이...
상상하고 싶 쓰기 명령 출력 로그 파일과*인쇄 stdout. 당신이해야 할 때 그것은 동일한 시간에,당신은 필요한
티
.사용 사례를 구축하는 스크립트 작성 전체 구축하 stdout(예를 들어 젠킨스)하지만 중요한은 같은 시간에 별도의 로그 파일(에 대한 요약 이메일).
You'll 정말을 놓치기 시작하는
티 때
당신은 스크립트를 사용하고 있습니다. 이 없tee
과는 정말 귀찮을 수 있습니다.