상세 컨텐츠

본문 제목

tee 명령어 사용법 [리눅스:Linux]

Linux/Command

by 걸어서뉴욕까지 2023. 8. 5. 11:55

본문

tee

표준 입력으로 받아서 표준 출력과 파일에 쓰는 명령어로 개인적으로는 shell 개발 시 log를 찍을 때 자주 사용합니다.

lsblk | tee my_devices.log

cat 명령어로 my_devices.log 파일을 출력해보면 터미널에서와 동일하게 저장되어 있는 걸 볼 수 있습니다.

 

기존 파일에 내용을 추가하고 싶을 때

tee 명령어는 기본적으로 파일을 덮어씌우는데 기존 내용은 유지하고 추가하고 싶다면 -a 옵션을 사용합니다.

lsblk | tee -a my_devices.log

 
 

화면에 출력하고 싶지 않을 때

화면에 출력하지 않고 파일로만 저장하고 싶을때는 출력을 /dev/null로 redirect 합니다.

lsblk | tee my_devices.log > /dev/null

 

 

root가 소유자인 파일에 쓸때

root가 소유자인 파일에 sudo 명령어로 내용을 추가하려고 하면 permission denied에러가 나는 것을 볼 수 있다 sudo를 사용해도 일반 사용자로 전환이 되기 때문인데, tee는 sudo 사용 권한을 그대로 가져간다

sudo echo -e "10.0.20.4    psndata02" >> /etc/hosts			# permission denied
echo -e "10.0.20.4    psndata02" | sudo tee -a /etc/hosts

 

vi 편집기 內에서 읽기 전용 메시지가 나올 때

vi 편집기로 read-only 메시지와 함께 override가 안될 경우에도 sudo 권한이 있다면 tee 명령어를 이용해서 변경 사항을 저장할 수 있습니다.

:w !sudo tee %