의 목적은 무엇인가'티'?

모든 용도의tee본은 있었다:

 do_something | tee -a logfile

또:

do_something_else | tee logfile

발명 사람들을 위해지 않는't 알고 당신과 같은 작업을 수행 할 수 있습 쉘 파이프 리다이렉션? 와 같은:

do_something >> logfile

또:

do_something_else > logfile

It's 거의 동일하고 그것은 덜 키보드 숙박을 타입니다. 무슨 숨겨진 기능을 나는 보지 않는?

질문에 대한 의견 (7)

무't 는do_something|티-로그파일넣으로 출력을logfile를 표준출력으로 출력하는 동안,do_something>>logfile그것을 둔****만로 logfile.

의 목적은tee을 생산하는 것입 한 개의 입력,여러 개의 산출 시나리오에는'T'크로싱도 있습니다.

편집

가 있었다 의견의 주위에 어떻게가능하게 합 seemless 의 사용에sudo. 이것은 옆에 있는 포인트:고양이,dd나 어쩌면 더 나은buffer이것을 제공 가능성은 더 나은 성과를 가진 경우,don't 필요 여러 개의 출력이 있습니다. 사용tee그것이 무엇인지에 대한 설계,아니한 것"할 수 있"

해설 (13)

Tee쓸모가 없

어쩌면 당신은 알고 있었을까요? 하지 않을 경우에 읽기! 는 경우 또는 어떻게 작동하는지 알고 있지만,아't 확그것이 존재하고,건너뛰기 종료를 어떻게 맞서 유닉 철학입니다.

무슨**의 목적은tee?

에서 가장 간단한 걸리는 데이터는 표준 입력 및 쓰기를 표준출력과 표준 중 하나는(혹은 많이)파일이 있습니다. 그에 비유[티 배관 조](https://en.wikipedia.org/wiki/Piping_and_plumbing_fitting#Tee 에서)이 방법은 분할의 입력으로 두 개의 출력(두 방).

예제

Let's 의 첫 번째 예제:

do_something | tee -a logfile

이것은 출력의do_something에 추가합 logfile 하는 동안,또한 표시하고 있습니다. 사실,Wikipedia 페이지에서이라는 두 번째 예제:

을 보고 추가로 출력에서 명령하고 기존 파일:

린트천 프로그램입니다.c|티 프로그램-.lint

이 표준의 출력 린트천 프로그램입니다.c 명령에 컴퓨터와 동일한 시간에 추가 그것의 사본을의 끝 프로그램입니다.린트 파일입니다. 는 경우 프로그램입니다.린트 파일이 존재하지 않습니다,그것이 만들어집니다.

다음 예제는 다른 사용:에스컬레이션의 권한:

을 허용하의 상승 사용 권한:

cat~/.ssh/id_rsa.pub|ssh 관리@server"sudo 티 a/root/.ssh/authorized_keys2>/dev/null"

이러한 예를 보여줍 티하는 데 사용되는 바이패스는 고유한 제한에sudo명령입니다.sudo할 수 없는 관을 표준 출력하는 파일입니다. 여 덤핑 표준 밖으로 스트림으로`/dev/null,우리는 또한을 억제하는 미러 출력합니다. 위 명령은 현재의 루트 사용자에 액세스하는 서버 ssh 에 설치하여 사용자는's public key 서버's 키 인증 목록입니다.

또는 아마도 당신을 하나의 명령 출력을 쓰는 것이 어딘가에 사용되는 입력으로 다른 명령은?

사용할 수도 있습니다 티 명령어를 저장하는 명령 출력을 파일로 리다이렉 같은 출력으로 입력하는 또 다른 명령입니다.

다음과 같은 명령을 백업을 수집 항목 및 통과 crontab 항목을 입력으로 나오는 명령을 할 것입니다 substitution. 대체 한 후,그것으로 추가됩니다 새로운 cron 작업입니다.

$crontab-l|티 crontab-backup.txt |sed's/old/new/'|crontab–

(신용티 명령을 사용 예)

Tee작품으로 유닉스의 철학:

쓰는 프로그램은 한 가지 않습니다. 프로그램을 작성하여 함께 작동합니다. 프로그램을 작성 텍스트를 처리하는 스트림이기 때문에,그것은 보편적인 인터페이스입니다.

(신용의 기초를 Unix 철학)

tee에 맞는 모든 이들의:

-그것은 하나의 일을 생성하는 여분의 복사본을 입력 -그것은 다른 프로그램이기 때문에 그것은 접착제(또는'T'배관 조각을 선호하는 경우)할 수 있는 다른 프로그램으로 함께 작업에서 위의 예제 -그것은 이것을 조작하여 텍스트 스트림을 주어서 표준 입력

해설 (5)

It's 거의 동일하고 그것은 덜 키보드 숙박을 타입니다.

그것은 동일하지 않습니다.

다음과 같은 나타나 다소에 해당하지만,그들은 그'다시되지 않:

$ echo "hi" > test.txt
$ echo "hi" | tee test.txt
hi

중요한 차이점은 전자가 작성된 데이터에만 이라는 파일에,후자는 서면"안녕"터미널(표준)and이라는 파일에 다음과 같습니다:


tee을 작성할 수 있는 데이터 파일 and 에서 사용하는 이후 파이프라인할 수 있을지 유용한 것처럼 유지하는 데이터에서 도중에을 통해 파이프라인:

grep '^look ' interesting_file.txt \
  | tee interesting_lines.txt \
  | sort

또는,당신은 당신할 수 있는 파일에 쓰기 권한을 상승을주지 않고,전체 파이프라인 높은 권한을 사용하여(여기에코이라는 이름으로 사용자는기록을 파일로root):

echo 0 \
  | sudo tee /proc/sys/net/ipv4/ip_forward

,쓰기를 할 수 있는 많은 파일(and표준):

echo "hi" \
  | tee a.txt b.txt

It's 를 사용하는 것도 가능하exec티을 기록하는전의 모든 스크립트's 파일로 출력을 허용하면서 관찰자(표준)데이터를 확인하십시오:

exec > >( tee output.log )
해설 (7)

이것은 티:

T-자형 파이프 피팅입니다. 그것은 입구 및 별도의 두 아울렛 등이 있습니다. 다시 말해서,그것은 분할을 하나의 파이프로 같은 포크 road.

마찬가지로,tee이 파이프(|)할 수 있는 리디렉션하는 표준 입력은 두 가지 별도의 출력이 있습니다.

말 예를 들어,당신은 종류ls/. You'을 얻을 것 출력이 다음과 같은:

Applications    Network     Users       bin        dev      net      private    tmp         var
Library         System      Volumes     cores      etc      home     opt        sbin        usr

리디렉션은 텍스트 파일로 출력을,ls/>ls.txt하고,출력이 표시되지 않 쉘에서 만에 결과 텍스트 파일입니다.

보고 싶은 출력,그리고 그것을 통과하는 텍스트 파일로에서 동일한 시간입니까? 추가티 선택할 수 있는 최고의 파이프(|)ie:ls/|티 ls.txt`

비교 두:

ls /          >          ls.txt
ls /        | tee        ls.txt
해설 (4)

No. 당신이 언급하 하나의 몇 가지 예입할 수 있는 실제로 리디렉션을 사용하여 파일의>>>연산자입니다.

하지만 티은 더 많은 작업을 수행 할 수 있습니다. 기 때문에 관하여 그것은 다음을 할 수 있습니다 파이프를 다른 뭔가가 있습니다.

좋은 예를 들어에 나열된wikipedia 페이지:

find "4DOS" wikipedia.txt | tee 4DOS.txt | sort > 4DOSsorted.txt

기본적으로,파이프로 연결할 수 있 티할 수 있도록 다음 파이프 티에서 다른 무언가이다. 만약 당신이해야 할 모든 당신이 쓰기 로그 파일,네,그런 너는't 이 정말로 필요합니다.

해설 (0)

tee은 지역에 쓸모가 없다. 내가 사용하는 그것의 모든 시간이 기쁩니다. It's 매우 유용한 도구가 있는 경우는 파이프라인을 분할하고 싶습니다. 매우 간단한 예제는 어떤 디렉토리$d하려는 타르고 당신은 또한 해시기 때문에 그것을 당신이'다시 편집증은(I)그리고 don't 신뢰 저장 매체를 보유 데이터를 안정적으로. 당신수 있그것을 작성하여 디스크에 처음 해시 그것은,그러나는'd 이 실패하는 경우 아카이브가 손상되기 전에 그's hashed. 또한,당신은 당신이'd 은 그것을 읽어야하고 작업하는 경우에는 파일은 여러 가지 백 GB 크기에 많이,당신은 알게 될 것이다 당신은 정말 don't 하려는 그들을 다시 읽지 않는 경우't 을 수 있습니다.

그래서 어떻게 하는 것은 단순히 이:

tar -c "$d" | tee >(sha256sum) >(cat > "$d"".tar") > /dev/null

성 타르 볼 및 파이프에 그것은 티는 다음 파이프 그것은 두 개의 서브 포탄,중 하나는's 는 해시된 기타의 it's 작성하여 디스크에 있습니다.

It's 는 경우에도 좋은 당신이 원하는 여러 가지 작업을 수행하에 큰 파일:

< file.tar.gz tee >(sha256sum) >(tar -xz) /other/storage/location/file.tar.gz > /dev/null

을 읽는 파일에 한 번,그것은 해시(그래서 당신은 여부를 확인할 수 있습 it's 는 여전히 그대로 이어야 한다),추출,그것을 복사 다른 위치에 있습니다. 을 읽을 필요가 없이 그것을 위해 세 번니다.

해설 (13)

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"

이 작품이기 때문에 포탄을 리디렉션에는 루트 권한이 있습니다.

해설 (1)

으로 다른 사람들도 언급된,파이프에 출력하는명령을 쓰는 출력을 모두 파일을 stdout.

내가 자주 사용하는티 때나는 캡처하려는 출력에서 명령이 오래 걸리는 시간을 실행하는 동안,또한 원하는 검사를 시각적으로 출력을 명령으로 그것이 가능합니다. That way,I don't 을 기다려야에 대한 명령을 완료하기 전에 실행하여 출력한다.

무엇't 것을 언급되었는지 아직(지 않는 한 나는 그것을 놓쳤),는명령할 수 있도 작성하여 여러 파일에 한 번. 예를 들어:

ls *.png | tee a.txt b.txt

이 쓰는 모든*.png파일을 현재 디렉토리에 두 개의 서로 다른 파일을(a.txtb.txt)한 번에.

에서 사실을 텍스트를 입력 할 수있는 여러 가지 다른 파일을 한번에tee다음과 같다:

$ tee --append a.txt b.txt c.txt d.txt
These lines are appended to four different files,
and are also written to stdout.
CTRL-D
해설 (0)

가장 일반적인 사용 티은 텍스트에서는 터미널에서 동일한 시간을 보내는 파일(). 의 표현의 문서 당신은 이제까지 쓰기 텍스트를 logfiles. 나는 스크립트는 목록을 작성의 파일 또는 디렉토리 이름을 트리거한 파일(에서 처리할 다른 스크립트를 비동기적으로)그리고 내가 사용하여 티을 보낼 경우에도 동일한 콘텐츠를 stdout. 모든 표준은 지시 로그입니다. 그래서 나는 나의 텍스트를 원하는 곳에 그것이 내가 로그 항목을 기록했는데,이것에서 모든 단'echo'statement

티한 최선의 방법에서 유닉을 만들기 위한 여러 개의 동일한 파일이 있습니다. 내가 사용하는 때때로 만들기 위한 여러 빈 파일,다음과 같이...

:|tee file01 file02 file03
해설 (3)

상상하고 싶 쓰기 명령 출력 로그 파일과*인쇄 stdout. 당신이해야 할 때 그것은 동일한 시간에,당신은 필요한.

사용 사례를 구축하는 스크립트 작성 전체 구축하 stdout(예를 들어 젠킨스)하지만 중요한은 같은 시간에 별도의 로그 파일(에 대한 요약 이메일).

You'll 정말을 놓치기 시작하는티 때당신은 스크립트를 사용하고 있습니다. 이 없tee과는 정말 귀찮을 수 있습니다.

해설 (7)