지침이 부족하다고 생각되는 약 3가지 설명을 접한 후 tee
Linux 초보자를 대상으로 이 명령에 대한 간단하고 일반적인 단계별(가능한 경우) 설명을 요청하겠습니다.
파이프, 명령의 stdout 또는 파일에서 직접 사용할 수 있다는 것은 알고 있지만 명령이 실제로 이러한 작업을 수행하는 작업과 유용할 시기에 대해서는 누락된 것 같습니다.
따라서 초보자에게 명확하고 단계별로 도움이 되는 교훈적인 설명을 찾기 위해 제가 요청하는 것은 다음과 같습니다.
이 명령은 명령의 표준 출력이나 파일 자체와 어떻게 작동합니까?
tee
왜 일반적 으로 표준 입력에서 읽는다고 합니까 ? 즉, 이렇게 하면 구문 자체는 읽히지 않지만ls -l
stdout 은 세션에 인쇄됩니다.tee
ls -l
또한 원하시면 일상 업무의 실제 사례를 공유해 주세요. tee
이 작업이 언제 효과가 있었나요?
답변1
tee
내 시스템의 매뉴얼 에서 :
tee 유틸리티는 표준 입력을 표준 출력으로 복사하여 0개 이상의 파일을 복사합니다. 출력은 버퍼링되지 않습니다.
따라서 표준 입력에서 읽어 표준 출력에 복사하는 동시에 스트림을 하나 이상의 파일에 복사합니다.
다음 파이프라인에서는 tee
파이프라인의 첫 번째 명령 출력을 가져와 표준 출력(터미널)에 복사하는 동시에 파일 one
및 파일 two
에도 복사합니다 three
.
$ somecommand | tee one two three
tee
다양한 용도가 있으며 그 중 하나는 sudo
출력을 루트 소유 파일로 리디렉션하는 것과 결합됩니다.
$ somecommand | sudo tee /root/somefile >/dev/null
다음은아니요이는 리디렉션이 권한이 없는 사용자로 발생하기 때문에 작동합니다( somecommand
아마도 필요하지 않은 루트로 실행될 수도 있음).
$ sudo somecommand >/root/somefile
한 번에 많은 파일에 고정된 행 세트를 추가하는 인위적인 예(모든 사용자 파일에 대해 확장은 사용자 이름까지이고 확장된 명령줄은 쉘이 처리하기에 너무 길어지지 않는다고 ~/.profile
가정 ):*
$ tee -a /home/*/.profile <<'END_NEWPATH'
PATH="$PATH:/opt/bin"
END_NEWPATH
실제 사용 사례 tee
:
time doas box-build.sh 2>&1 | tee build.out | grep '^=*>'
이것이 제가 OpenBSD용으로 구축한 기본 시스템입니다. doas
예OpenBSD "동등"sudo
box-build.sh
(본질적으로) 빌드를 위한 작은 쉘 스크립트 입니다 cd /usr/src && make obj && make build
. 오류나 경고를 포함하여 전체 빌드 프로세스의 출력을 저장하고 싶지만 모든 것이 내 터미널에 넘쳐나는 것을 원하지 않습니다. 이를 위해 tee
모든 것을 저장 build.out
한 다음 grep
터미널에서 프로세스의 현재 위치를 가져오는 프롬프트를 사용합니다.
여기에 태그된 다른 질문도 참조하세요티상표.