tee 명령은 어떻게 작동합니까? [폐쇄]

tee 명령은 어떻게 작동합니까? [폐쇄]

지침이 부족하다고 생각되는 약 3가지 설명을 접한 후 teeLinux 초보자를 대상으로 이 명령에 대한 간단하고 일반적인 단계별(가능한 경우) 설명을 요청하겠습니다.

파이프, 명령의 stdout 또는 파일에서 직접 사용할 수 있다는 것은 알고 있지만 명령이 실제로 이러한 작업을 수행하는 작업과 유용할 시기에 대해서는 누락된 것 같습니다.

따라서 초보자에게 명확하고 단계별로 도움이 되는 교훈적인 설명을 찾기 위해 제가 요청하는 것은 다음과 같습니다.

  1. 이 명령은 명령의 표준 출력이나 파일 자체와 어떻게 작동합니까?

  2. tee왜 일반적 으로 표준 입력에서 읽는다고 합니까 ? 즉, 이렇게 하면 구문 자체는 읽히지 않지만 ls -lstdout 은 세션에 인쇄됩니다.teels -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용으로 구축한 기본 시스템입니다. doasOpenBSD "동등"sudobox-build.sh(본질적으로) 빌드를 위한 작은 쉘 스크립트 입니다 cd /usr/src && make obj && make build. 오류나 경고를 포함하여 전체 빌드 프로세스의 출력을 저장하고 싶지만 모든 것이 내 터미널에 넘쳐나는 것을 원하지 않습니다. 이를 위해 tee모든 것을 저장 build.out한 다음 grep터미널에서 프로세스의 현재 위치를 가져오는 프롬프트를 사용합니다.

여기에 태그된 다른 질문도 참조하세요상표.

관련 정보