본문 바로가기

리눅스

tee 명령어

728x90

tee 명령어

tee 명령어는 리눅스나 유닉스 환경에서 사용되는 명령어 중 하나로 표준 입력으로부터 입력을 받아 여러 개의 출력 스트림으로 출력하는 명령어입니다. 특히 파일과 표준 출력 모두에 출력할 수 있어서 유용하게 사용됩니다.

(표준출력(stdout)을 화면과 파일로 동시에 출력하는 리눅스 명령어)

이미지 출처-https://upload.wikimedia.org/wikipedia/commons/2/24/Tee.svg

기본적인 구문

[입력 명령어] | tee [옵션] 파일명

위 명령어를 실행하면, 입력 명령어를 실행하고 그 결과를 출력 파일명에 지정한 파일과 표준 출력으로 출력합니다. 만약 출력 파일명이 지정되지 않으면 tee 명령어는 표준 출력으로만 결과를 출력합니다.

 

출력 파일이 이미 존재하는 경우 tee 명령어는 해당 파일을 덮어쓰게 됩니다. 이를 방지하고자 한다면 -a 옵션을 사용하여 이어쓰기 모드로 파일에 출력할 수 있습니다.

tee 명령어의 옵션

  • -a 또는 --append : 파일에 내용을 추가합니다. 파일이 존재하지 않으면 새로 생성합니다.
  • -i 또는 --ignore-interrupts : 인터럽트 시그널(Ctrl+C)을 무시하고 계속 실행합니다.

예를 들어, 현재 디렉토리의 리스트를 출력하고 파일에 저장하면서 동시에 표준 출력으로 출력하는 명령어는 다음과 같습니다.

$ ls | tee output.txt

위 명령어를 실행하면 ls 명령어를 실행하고 그 결과를 output.txt 파일과 표준 출력으로 출력합니다. 만약 output.txt 파일이 이미 존재하면 해당 파일을 덮어쓰게 됩니다.

 

이와 같이 tee 명령어는 입력을 다양한 출력 스트림으로 분배할 때 유용하게 사용됩니다. 이를 통해 복잡한 명령어를 구성할 수 있고, 작업 결과를 여러 파일에 동시에 저장하거나 화면에 출력할 수 있습니다.

 

사용법

TEE(1L)                                                                                                                                          TEE(1L)
이름
       tee - 표준입력으로부터 읽어서 표준출력, 화일로 쓴다.
개요
       tee [-ai] [--append] [--ignore-interrupts] [--help] [--version] [화일...]
설명
       이 맨페이지는 GNU 버전의 tee 를 다룬다.  tee 명령은 표준입력으로부터의 입력을 표준출력 또는 인수로 주어진 화일에 복사한다.
       씌여질 화일이 존재하지 않으면 생성된다. 만약 이미 존재한다면 -a 옵션을 사용하지 않는 한 이전의 자료는 모두 지워진다.
   옵션
       -a, --append
              덮어쓰지 않고 주어진 화일에 표준입력을 추가한다.
       --help 표준출력으로 사용법을 출력하고 정상적으로 종료한다.
       -i, --ignore-interrupts
              인터럽트 신호를 무시한다.
       --version
              표준출력으로 버전정보를 출력하고 정상적으로 종료한다.
FSF                                                                  GNU 쉘 유틸리티                                                             TEE(1L)
728x90

사용 예시

  • 기본 사용
    • ls 명령어를 사용하여 출력을 파일에 저장하고 동시에 터미널에 출력합니다.
ls | tee filelist.txt
$ ls | tee filelist.txt
anaconda-post.log
bin
dev
etc
filelist.txt
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
df -h | egrep -v overlay | tee df.txt
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.9G     0  1.9G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G  520K  1.9G   1% /run
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/nvme0n1p1   20G  8.9G   12G  45% /
tmpfs           389M     0  389M   0% /run/user/1000
$ cat df.txt
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.9G     0  1.9G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G  520K  1.9G   1% /run
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/nvme0n1p1   20G  8.9G   12G  45% /
tmpfs           389M     0  389M   0% /run/user/1000
touch a.txt
echo "tee test" | tee a.txt
tee test
$ cat a.txt
tee test
  • 추가 모드로 파일에 쓰기
    • 이미 존재하는 파일에 내용을 추가하는 경우 -a 옵션을 사용합니다.
echo "tee testA" | tee -a a.txt
tee testA
$ cat a.txt
tee test
tee testA
  • 여러 파일에 출력
    • tee 명령어를 사용하여 여러 파일에 동시에 출력할 수 있습니다.
echo 'Hello, Tee!' | tee file1.txt file2.txt
$ echo 'Hello, Tee!' | tee file1.txt file2.txt
Hello, Tee!
$ cat file1.txt file2.txt
Hello, Tee!
Hello, Tee!

 

728x90