tee
터미널에 stdout을 표시합니다. 그렇게 하고 싶지 않지만 옵션을 찾을 수 없습니다.
|| visible in terminal || visible in file || existing
Syntax || StdOut | StdErr || StdOut | StdErr || file
==========++==========+==========++==========+==========++===========
> || no | yes || yes | no || overwrite
>> || no | yes || yes | no || append
|| | || | ||
2> || yes | no || no | yes || overwrite
2>> || yes | no || no | yes || append
|| | || | ||
&> || no | no || yes | yes || overwrite
&>> || no | no || yes | yes || append
|| | || | ||
| tee || yes | yes || yes | no || overwrite
| tee -a || yes | yes || yes | no || append
|| | || | ||
n.e. (*) || yes | yes || no | yes || overwrite
n.e. (*) || yes | yes || no | yes || append
|| | || | ||
|& tee || yes | yes || yes | yes || overwrite
|& tee -a || yes | yes || yes | yes || append
답변1
> file
[질문을 편집하십시오. 첫 번째 줄에서 간단히 리디렉션하면 제목이 이해되지 않습니다 .]
누락된 행은 다음에서 찾을 수 있습니다.세게 때리다리디렉션 + 프로세스 교체와 결합됩니다 2> >(...)
.> >(...)
예를 들어, 가장 유용한 경우(마지막에 있는 전체 표 참조):
# both stderr+stdout to the tty, only stderr to the file
$ ls -d /etc /etx 2> >(tee file)
/etc
ls: cannot access '/etx': No such file or directory
$ cat file
ls: cannot access '/etx': No such file or directory
이는 > >(...)
까다롭고 문제가 되는 경우가 많습니다. 제대로 작동하더라도 stdout과 stderr이 혼동되거나 프롬프트 다음에 나타날 수 있습니다.
bash$ sh -c 'sleep .1; ls -d /etc /etx' 2> >(tee errors)
ls: cannot access '/etx'/etc
: No such file or directory
bash$ ls -d /etc /etx 2> >(sleep .1; tee errors)
/etc
bash$ ls: cannot access '/etx': No such file or directory
이식 가능한 경우 stdout과 stderr을 다음과 같이 교체하면 됩니다 3>&2 2>&1 >&3 3>&-
.
$ ls -d /etc /etx 3>&1 >&2 2>&3 3>&- | cat | tee file
ls: cannot access '/etx': No such file or directory
/etc
$ cat file
ls: cannot access '/etx': No such file or directory
참고: 티의 입력 버퍼를 방지하려면 "쓸모 없는" 고양이 stdbuf -i0 tee file
도 필요합니다. 서로 다른 출력을 함께 혼합하면언제나이는 동일한 위치에 여러 프로세스를 쓰는 경우 문제가 되며, 내가 아는 한 fprintf
애플리케이션 자체 내에서 실제 호출과 유사한 호출을 가로채지 않고는 문제를 해결할 수 있는 방법이 없습니다.
시트
추가 테이블은 생략됩니다. 및 tee file
로 바꾸면 쉽게 얻을 수 있습니다 . 이러한 명령이 대화형 터미널에서만 실행되도록 의도된 경우 단순화할 수 있습니다.tee -a file
>file
>>file
... tee /dev/fd/3 ... 3 >&1 or 3>&2 ...
tee /dev/tty
세게 때리다
TERMINAL FILE
OUT ERR OUT ERR
yes yes yes yes cmd |& tee file
yes yes yes no cmd | tee file
yes yes no yes cmd 2> >(tee file)
yes yes no no cmd
yes no yes yes (cmd | tee /dev/fd/3) 3>&1 &>file
yes no yes no cmd 2>/dev/null | tee file
yes no no yes cmd 2>file
yes no no no cmd 2>/dev/null
no yes yes yes (cmd 2> >(tee /dev/fd/3)) 3>&2 &>file
no yes yes no cmd >file
no yes no yes cmd 2> >(tee file) >/dev/null
no yes no no cmd >/dev/null
no no yes yes cmd &>file
no no yes no cmd >file 2>/dev/null
no no no yes cmd >/dev/null 2>file
no no no no cmd &>/dev/null
표준/빈/sh
TERMINAL FILE
OUT ERR OUT ERR
yes yes yes yes cmd 2>&1 | tee file
yes yes yes no cmd | tee file
yes yes no yes cmd 3>&2 2>&1 >&3 3>&- | tee file
yes yes no no cmd
yes no yes yes (cmd | tee /dev/fd/3) 3>&1 >file 2>&1
yes no yes no cmd 2>/dev/null | tee file
yes no no yes cmd 2>file
yes no no no cmd 2>/dev/null
no yes yes yes (cmd 4>&2 2>&1 >&4 4>&- | tee /dev/fd/3) 3>&1 >file 2>&1
no yes yes no cmd >file
no yes no yes cmd 2>&1 >/dev/null | tee file
no yes no no cmd >/dev/null
no no yes yes cmd >file 2>&1
no no yes no cmd >file 2>/dev/null
no no no yes cmd >/dev/null 2>file
no no no no cmd >/dev/null 2>&1