본문 바로가기
IT/리눅스 명령어

리눅스 tee 명령어 사용법 및 옵션 총정리 - 리눅스 기본 명령어

by 꾸꾸웍스 2022. 7. 7.
반응형

 


리눅스 tee 명령어 사용법 및 옵션 총정리 - 리눅스 기본 명령어


 

 

 

 

 

※ 목차

1. 리눅스 tee 명령어란??
2. 리눅스 tee 명령어 사용법
3. 리눅스 tee 명령어 옵션
4. 리눅스 tee 명령어 옵션 사용예시

 

 

1. 리눅스 tee 명령어란???

 

 

리눅스 명령어의 tee 명령어는 표준 입력에서 읽은 내용을 표준 출력에도 사용하면서 파일에 저장하는 두 가지를 동시에 사용하는 명령어입니다. 파일을 리다이렉션을 사용하여 표준 입력으로 받아 파일로 저장하거나 동일한 파일 복사하는 등 파일을 저장하는 방법은 많지만 tee를 사용해야 되는 이유는 따로 존재합니다.

 

 

$ sudo echo "3.3.3.3 melon" >> hosts

일반 사용자 계정에서 sudo 명령을 이용하여 root의 권한으로 hosts 파일을 이어서 작성하면 권한 오류가 출력되지만

 

$ echo "3.3.3.3 melon" | sudo tee -a hosts

tee 명령을 이용하면 일반 사용자 계정에서도 sudo명령어를 이용하여 root의 권한으로 root 소유인 파일을 이어 쓰기 할 수 있습니다.

 

 

 

2. 리눅스 tee 명령어 사용법

 

1) tee 명령어 기본 사용법

tee [옵션] [파일]

tee 명령어 뒤 파일은 파일명만 입력하면 현재 위치한 디렉토리에 파일이 만들어지며 경로와 함께 파일명을 입력하면 지정한 경로에 지정한 파일명으로 저장됩니다

 

 

2) 표준 출력을 이용한 사용법

echo "{출력내용}" | tee [파일이름]

$ echo "apple" | tee fruit

echo 명령어를 이용하여 apple을 출력한 값을 tee명령어의 표준 입력으로 들어가며 fruit로 파일을 저장하고 표준 출력으로 출력됩니다

 

 

3) tee를 이용하여 파일 복사하기

cat [파일] | tee [복사할 파일이름1] [복사할 파일이름2] ...

$ cat fruit | tee testfile

이전에 만든 fruit의 파일을 cat으로 열어 tee명령어를 이용하여 복사할 이름 testfile로 명령하면 fruit 파일과 내용이 같은 testfile이 만들어집니다. 또한 복사할 파일 이름은 여러 개로 입력하면 한 개가 아닌 여러 개의 파일로 복사됩니다.

 

 

4) EOF 표준입력을 이용하여 파일 저장하기

tee [파일이름] << EOF
> 내용 1
> 내용 2
....
> EOF

 

EOF는 End Of File의 약자로 흔히 파일을 저장할 때 사용하는 방법이나 특정 문자 사이에 지정한 내용을 PS2 프롬프트로 입력을 받아 명령을 수행합니다. 텍스트 파일을 직접 입력해야 하며 사용 시작(EOF)을 알리고 끝날 때도 동일하게(EOF)를 입력해야 종료됩니다. EOF는 EOT(End Of Text)를 사용해도 되며 EOF, EOT 말고도 다른 특정 문자를 입력하여 사용해도 됩니다

 

 

 


EOF 파일 생성 예시

EOF를 이용하여 파일을 생성하는 예시입니다.

 


 

 

반응형

 

 

5) 파일 및 디렉토리의 위치 찾기

find / | grep [찾을 파일 및 디렉토리] | tee [파일이름]

$ find / | grep "langfile" | tee search.txt

find 명령어를 이용하여 특정 파일이나 특정 디렉토리명을 찾는 경우가 있습니다. 하지만 find 명령어로 검색을 하다 보면 터미널 창이 넘어갈 만큼 많은 경로들이 출력되게 됩니다. 이 내용을 tee 명령어로 이용해 출력과 동시에 파일로 저장하여 vi 편집기나 파일을 열 수 있는 명령어로 찾으면 수월하기 때문에 tee 명령어를 함께 사용하면 편리하게 사용할 수 있습니다

 

 

6) tee 명령 시 파일명 입력이 되지 않을 때

출력명령 | tee -

$ echo "apple" | tee -

tee 명령어 다음 파일명이 하이픈(-)으로 입력이 되면 표준 입력으로 들어온 내용을 표준 출력으로 표시하고 표준 입력을 파일로 저장하지 않고 다시 한번 표준 출력으로 다시 복사해서 출력하게 되어 총 2번이 출력됩니다.

 

$ echo "apple" | tee 

또한 tee 명령 뒤에 파일명이 입력되지 않으면 표준 입력으로 들어온 내용을 표준 출력으로만 표시하게 됩니다.

 

 

7) tee명령어 실행 시 표준출력 무시

출력명령 | tee [파일명] > /dev/null

$ echo "apple" | tee fruit > /dev/null

tee명령은 표준 입력을 받아 파일을 저장하고 표준 출력으로 출력하게 됩니다. 파일만 저장하고 표준 출력을 보고 싶지 않을 때는 /dev/null로 표준 출력을 전송하면 출력내용은 버려지기 때문에 출력이 되지 않습니다. 쉽게 말해 /dev/null은 윈도우의 휴지통처럼 생각하시면 됩니다

 

 

 

 

 

 

3. 리눅스 tee 명령어 옵션

 

번호 옵션 long 옵션 설명
1 -.a --append 지정한 파일에 이어쓰기(추가)를 하고 덮어쓰지 않습니다
2 -i --ignore-interrupts 인터럽트 신호를 무시합니다
3 - --help tee 명령어의 사용법을 출력합니다
4 - --version tee 명령어의 버전을 출력합니다

 

 

 

4. 리눅스 tee 명령어 옵션 사용 예시

 

1) tee -a 옵션 사용법

출력명령 | tee -a [파일명]

$ echo "banana" | tee -a fruit

tee명령어의 a의 옵션은 주어진 파일에 덮어쓰지 않고 이어쓰기를 이용하여 파일을 저장하게 됩니다. 출력 명령을 이용한 내용을 기존에 파일에 내용에 이어서 저장하려면 반드시 a옵션을 사용해야 됩니다.

 

 

2) tee -i 옵션 사용법

출력명령 | tee -i [파일명]

tee명령어의 i 옵션은 인터럽트 신호를 무시하게 됩니다. 


$ cat test.txt | tee -i file.txt > /dev/null

위 사진의 test.txt파일은 약 1.1G가 되는 텍스트 파일이며 tee명령어를 사용 시 시간이 조금 걸리게 됩니다. tee명령어가 작동하면서 ctrl+c를 입력하면 키보드로 입력받은 ctrl+c는 입력 시 프로세스에는 특정 이벤트가 발생하여 신호를 보내는데 이때 인터럽트가 발생하여 SIGINT라는 신호를 프로세스에게 전달하게 되어 프로세스가 비정상적으로 종료되게 됩니다. 즉 키보드로부터 오는 인터럽트 시그널로 실행을 중지시킵니다. 하지만 -i 옵션을 사용하지 않으면 인터럽트 신호가 발생하여 명령어가 실패 반환 값을 나타내지만 tee명령어가 정상적으로 종료되기를 원한다면 -i 옵션을 사용하면 됩니다. 

 

echo $? 의 의미는 마지막으로 종료된 명령어의 상태를 말해주는데 정상적인 종료가 0이고 0을 제외한 나머지는 비 정상적인 종료를 의미합니다. 

 

 

3) tee --help 옵션 사용법

tee --help

$ tee --help

tee명령어의 사용법을 출력하게 됩니다

 

 

4) tee --version 옵션 사용법

tee --version

$ tee --version

tee 명령어의 버전을 출력하게 됩니다

 

 

 

 


 

반응형
그리드형

댓글