Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

Linux의 tee 명령 – 분할 셸 출력 [예제]

Linux Shell/명령줄의 명령은 응용 프로그램의 출력을 분할하여 파일 모두에 출력을 보냅니다. STDOUT (콘솔 또는 다른 응용 프로그램). 사용 방법은 다음과 같습니다.

명령의 이름은 배관에 사용되는 T-스플리터(단일 수원의 물을 두 방향으로 리디렉션하는 파이프)의 이름을 따서 명명되었습니다.

tee 명령 구문

간단한 목적과 간단한 구문을 가진 명령입니다:

tee OPTIONS FILE

참고:

  • 옵션 아래 표의 옵션 목록입니다.
  • 파일 출력을 저장하려는 파일의 경로입니다.
  • 입력은 파이프로 연결되거나 tee로 리디렉션되어야 합니다. 그렇지 않으면 작업할 항목이 없습니다.
    • 표준 입력/출력을 리디렉션하여 수행됩니다. 예는 아래를 참조하세요.
  • 제공된 데이터를 모두 FILE에 출력합니다. STDOUT뿐만 아니라 지정됨 (표준 출력)
    • 기본적으로 콘솔에 출력되지만 다른 애플리케이션으로 리디렉션될 수도 있습니다.

옵션

다음은 에 가장 일반적으로 사용되는 옵션입니다. 명령:

<일>
-a, –append 주어진 파일에 추가, 덮어쓰지 않음
-i, –무시 인터럽트 인터럽트 신호 무시

오류 진단 방법을 포함한 더 많은 옵션을 보려면 다음을 실행하여 사용 설명서를 볼 수 있습니다.

man tee

명령 예

다음은 방법에 대한 몇 가지 간단한 예입니다. 사용할 수 있습니다.

이 모든 예는 echo를 사용합니다. 단순히 제공된 텍스트를 출력하는 명령입니다.

명령의 출력을 보고 새 파일로 저장

에코의 출력 명령은 tee로 파이프되어 파일에 저장되고 콘솔에 출력됩니다.

echo "hello!" | tee hello.txt

파일이 hello.txt인 경우 존재하는 경우 덮어씁니다.

명령의 출력을 보고 기존 파일로 저장

이 예는 위와 동일하지만 기존 파일을 덮어쓰지 않고 끝에 추가합니다.

echo "hello again!" | tee -a hello.txt

여러 파일에 출력 저장 또는 추가

공백으로 구분하여 여러 파일을 지정할 수 있습니다.

echo "hello several files!" | tee hello1.txt hello2.txt hello3.txt

리디렉션/파이프  출력

의 표준 출력 파이프 및 리디렉션될 수 있습니다. 아래 예에서는 echo의 출력을 hello.txt에 저장합니다. 그러면 출력이 grep으로 전달됩니다. 콘솔에 출력하는 대신 명령:

echo "hello!" | tee hello.txt | grep hello

예를 들어 grep 명령(텍스트 입력 검색에 사용)은 단순히 'hello'라는 단어에 대한 tee의 출력을 검색합니다.

인터럽트 무시

인터럽트를 무시하면(예:명령을 종료하기 위해 CTRL + C 누르기) tee에서 더 깔끔한 출력을 얻을 수 있습니다. :

echo "hello!" | tee -i hello.txt

사용 sudo 사용

sudo command는 root로 로그인하지 않고도 root 사용자로 명령을 실행할 수 있도록 하며 일반적으로 사용됩니다.

다음 스니펫에서 – sudo 하지 않습니다 sudo와 같이 명령 출력을 리디렉션할 수 있습니다. 명령 자체는 리디렉션 기호(> ):

sudo echo "hello!" > /root/hello.txt

.../root 때문에 권한 오류와 함께 실패합니다. 디렉토리에는 루트 권한이 필요하지만 sudo 명령은 이러한 권한을 echo에만 적용합니다. 명령 - 이후에 오는 리디렉션이 아닙니다.

이 문제를 해결하는 방법은 를 사용하는 것입니다. 명령:

echo "hello!" | sudo tee /root/hello.txt

이것은 echo의 출력 때문에 작동합니다. 명령이 에 전달됩니다. , 이는 이다 sudo를 통해 관리자 권한으로 실행 중 – 및  출력을 저장합니다.