ioerror

tee 사용법 및 옵션 - 표준 입력을 받아 표준 출력과 파일에 동시에 기록하는 명령어 본문

OS

tee 사용법 및 옵션 - 표준 입력을 받아 표준 출력과 파일에 동시에 기록하는 명령어

반응형

tee - Read from standard input and write to standard output and files

tee - Read from standard input and write to standard output and files

표준 입력(stdin)으로 전달된 데이터를 읽어 표준 출력(stdout)으로 화면에 표시하는 동시에 하나 이상의 파일에 기록한다. 파이프라인 연산 중간에 데이터 흐름을 분기하여 중간 결과를 저장하거나 로그 파일로 남길 때 주로 사용된다. 리눅스, macOS, Unix 등 대부분의 POSIX 준수 OS 및 모든 기본 셸 환경에서 제약 없이 동작한다. 출력 리다이렉션(>)과 달리 화면 출력을 유지하면서 파일 저장을 병행할 수 있으나, 관리자 권한이 필요한 파일 작성 시 sudo와 조합하는 방식을 정확히 숙지해야 한다.

1. 명령어 용도

  • 시스템 진단 명령어 실행 결과를 화면으로 확인하며 파일에 실시간 기록
  • sudo 권한이 필요한 시스템 파일에 파이프라인 전달 데이터 쓰기
  • 스크립트 실행 중 중간 연산 데이터를 별도 파일로 캡처하여 디버깅
Bash
 
# sudo 권한이 필요한 루트 소유 파일에 설정 추가 (StackOverflow 최다 추천 패턴)
echo "127.0.0.1 mydomain.local" | sudo tee -a /etc/hosts

# 빌드 과정을 터미널로 확인하면서 동시에 build.log 파일에 저장
make | tee build.log

2. 명령어 서식

Bash
 
tee [옵션]... [파일]...

3. 명령어 옵션

옵션 설명 사용가능 OS 및 쉘
-a, --append 기존 파일 내용을 덮어쓰지 않고 파일 끝에 데이터를 추가 ALL
-i, --ignore-interrupts 인터럽트 신호(SIGINT, Ctrl+C)를 무시하고 작업 계속 수행 ALL
-p POSIX 호환성을 유지하며 파이프 쓰기 오류 발생 시 경고 출력 [GNU Linux] [macOS]
--output-error[=MODE] 쓰기 오류 발생 시 동작 방식 지정 (warn, warn-nopipe, exit, exit-nopipe) [GNU Linux]
--help 명령어 도움말 정보를 출력하고 종료 [GNU Linux]
--version 버전 정보를 출력하고 종료 [GNU Linux]
Bash
 
# 파일 추가 쓰기 및 화면 출력 동시 실행 예시
echo "NEW_LOG_ENTRY" | tee -a app.log
# NEW_LOG_ENTRY
  • echo "NEW_LOG_ENTRY": 표준 입력으로 전달될 텍스트 데이터를 생성
  • tee -a app.log: 입력을 받아 화면에 NEW_LOG_ENTRY를 출력함과 동시에 app.log 파일 최하단에 텍스트를 누적 기록
  • NEW_LOG_ENTRY: 표준 출력(stdout)을 통해 터미널 화면에 표시된 출력 결과

4. 명령어 특이사항(유의사항)

Stack Overflow에서 가장 빈번하게 질문되는 유형은 sudo echo "text" > /etc/file 실행 시 Permission Denied 오류가 발생하는 현상이다. 리다이렉션 기호(>)는 셸 자체 권한으로 처리되므로 sudo를 앞에 붙여도 파일 생성 권한을 얻지 못한다. 이때 echo "text" | sudo tee /etc/file 구문을 사용하면 tee 명령어 자체가 sudo 권한으로 실행되어 제한된 영역의 시스템 파일 작성을 안전하게 해결할 수 있다. 또한 -a 옵션을 누락할 경우 기존 파일의 모든 내용이 덮어씌워지므로 사용상 주의가 요구된다.

관련 명령어들

  • cat: 파일 내용을 연달아 출력하거나 병합
  • script: 터미널 세션의 모든 입출력 내용을 텍스트 파일로 기록
  • logger: 시스템 syslog에 메시지를 기록
  • tail: 파일의 마지막 일부분을 실시간 추적하여 출력

https://ioerror.tistory.com/entry/UNIX-Linux-Command-Reference

 

UNIX & Linux Command Reference

유닉스 / 리눅스 명령어 표유닉스와 리눅스 환경에서 자주 사용되는 필수 명령어들을 완벽하게 정리한다. 서버 관리, 프로그래밍, 일상적인 시스템 운영 등 어떤 목적이든 터미널 환경을 능숙하

ioerror.tistory.com

 

 

 

반응형
Comments