tee 명령을 사용하여 실패한 명령의 오류 및 메시지를 캡처하는 방법

tee 명령을 사용하여 실패한 명령의 오류 및 메시지를 캡처하는 방법

오류를 캡처하여 사용자 지정 메시지와 함께 로그 파일에 기록하고 싶습니다.

다음 명령을 고려하십시오.

$(find $val -type f -delete) || echo "error in deleting files" |tee -a log.txt

이 명령은 log.txt 파일에 다음 줄을 씁니다.

error in deleting files

그러나 로그 파일이 다음과 같이 보이도록 사용자 정의 메시지와 함께 find 명령의 오류를 로그 파일에 인쇄하고 싶습니다.

find: `/home/temp': No such file or directory
error in deleting files

답변1

거기에서 연산자 우선 순위를 변경하고 find || echo명령을 파이프로 리디렉션되는 복합 명령으로 그룹화 해야 합니다 tee.

{ $(find $val -type f -delete) || echo "error in deleting files"; } 2>&1 |tee -a log.txt

또는:

($(find $val -type f -delete) || echo "error in deleting files") 2>&1 |tee -a log.txt

리디렉션은 오류 메시지를 에서 읽고 있는 파이프로 리디렉션하는 2>&1데 사용되지만 출력은 이미 자연스럽게 해당 파이프로 들어가고 있습니다 .findteeecho

관련 정보