> 텍스트 처리 및 검색 > tee

tee -a: 표준 출력을 파일에 추가 기록

`tee` 명령어는 표준 입력을 읽어 표준 출력과 하나 이상의 파일에 동시에 쓰는 유틸리티입니다. 특히 `-a` (append) 옵션은 기존 파일의 내용을 덮어쓰지 않고, 새로운 내용을 파일의 끝에 추가할 때 사용됩니다. 이는 로그 파일 관리, 스크립트 실행 결과 기록 등 다양한 상황에서 유용하게 활용됩니다.

개요

`tee`는 파이프라인 중간에서 데이터를 가로채어 화면에 출력하면서 동시에 파일에도 저장하는 역할을 합니다. `-a` 옵션은 이 저장 방식을 '추가' 모드로 변경하여, 기존 파일의 내용을 보존하면서 새로운 데이터를 덧붙일 수 있게 합니다. 이는 `>` 리다이렉션이 파일을 덮어쓰는 것과 달리 `>>` 리다이렉션과 유사하지만, `tee`는 표준 출력으로도 데이터를 계속 전달한다는 점에서 차이가 있습니다.

주요 특징

  • 표준 입력과 표준 출력을 동시에 처리
  • 파일에 내용 추가(-a 옵션)
  • 파이프라인 중간에서 데이터 흐름 제어
  • 여러 파일에 동시 기록 가능

주요 옵션

`tee` 명령어는 파일에 데이터를 기록하는 방식을 제어하는 다양한 옵션을 제공합니다. 특히 `-a` 옵션은 기존 파일 내용을 보존하면서 데이터를 추가할 때 필수적입니다.

기록 방식

생성된 명령어:

명령어를 조합해 보세요.

설명:

`tee` 명령어를 실행합니다.

위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.

사용 예시

`tee -a` 명령어를 활용하여 다양한 시나리오에서 파일에 데이터를 추가하는 방법을 알아봅니다.

기존 파일에 내용 추가

echo "새로운 로그 메시지" | tee -a my_log.txt

`echo` 명령의 출력을 `my_log.txt` 파일에 추가하면서 동시에 화면에도 출력합니다.

시스템 로그 파일에 추가 (sudo 활용)

echo "[$(date)] 시스템 이벤트 발생" | sudo tee -a /var/log/syslog

권한이 필요한 시스템 로그 파일에 내용을 추가할 때 `sudo`와 함께 `tee -a`를 사용합니다. 일반적인 `>>` 리다이렉션은 셸이 먼저 권한을 확인하므로 실패할 수 있습니다.

여러 파일에 동시에 내용 추가

ls -l | tee -a file1.txt file2.txt

하나의 출력을 여러 파일에 동시에 추가할 수 있습니다.

스크립트 실행 결과 기록

./my_script.sh | tee -a script_output.log

스크립트나 명령어의 모든 출력을 파일에 기록하면서 실시간으로 화면에서도 확인합니다.

팁 & 주의사항

`tee -a` 명령어를 더욱 효과적으로 사용하기 위한 팁과 주의해야 할 점들입니다.

sudo와 함께 사용 시

`sudo`를 사용하여 권한이 필요한 파일에 기록할 때 `tee`는 매우 유용합니다. `echo "내용" >> /path/to/protected_file`과 같은 직접적인 리다이렉션은 셸이 리다이렉션을 처리하기 전에 권한을 확인하므로 실패할 수 있습니다. `tee`는 파이프를 통해 `sudo`의 권한으로 실행되므로 이 문제를 해결합니다.

  • 올바른 사용: echo "내용" | sudo tee -a /path/to/protected_file
  • 잘못된 사용 (권한 문제): sudo echo "내용" >> /path/to/protected_file

에러 처리

`tee`는 파일 쓰기 중 에러가 발생하면 표준 에러로 메시지를 출력하지만, 파이프라인의 다음 명령으로 데이터 흐름을 계속 전달하려고 시도합니다. 중요한 데이터의 경우, `set -o pipefail`과 같은 셸 옵션을 사용하여 파이프라인 내의 어떤 명령이라도 실패하면 전체 파이프라인이 실패하도록 설정하는 것을 고려할 수 있습니다.

파일 생성

`tee -a`는 지정된 파일이 존재하지 않으면 자동으로 파일을 생성합니다. 따라서 미리 파일을 생성할 필요가 없습니다.


동일 카테고리 명령어