표준 출력과 오류 출력을 하나의 파일에 축적하고 오류 출력을 별도의 파일로 추출하는 방법이 있습니까?

표준 출력과 오류 출력을 하나의 파일에 축적하고 오류 출력을 별도의 파일로 추출하는 방법이 있습니까?

일부 bash 스크립트를 실행하고 모든 출력을 파일로 캡처하고 싶습니다. 이것은 쉽습니다. 파일 설명자 2를 표준 출력과 동일한 위치로 리디렉션하고 파일 설명자 1에 씁니다.

하지만 동시에 오류 출력만 특수 파일로 추출하려면 어떻게 해야 합니까?

배경은 다음과 같습니다. 일부 오류가 발생할 경우 스크립트 실행에서 특수 오류 파일을 생성하고 싶지만 모든 출력 메시지의 컨텍스트에서 오류가 정확히 발생한 위치와 그 밖의 오류를 설명하는 가능한 오류 메시지도 보고 싶습니다. 가능 추가 디버깅 메시지 또는 오류 컨텍스트.

또한 실행 중에 어떤 오류 메시지가 생성될지 미리 알 수 있는 방법이 없으므로 일부 오류가 발생했기 때문에 일부 특정 문자열에 대해 생성된 전체 출력에 대해 일부 후처리 필터링을 수행할 수 없습니다. , 어떤 문자열을 타겟팅해야 합니까?

중복으로 표시된 편집된 원본 질문: bash 솔루션

{ your-cmd 2>&1 >&3 3>&- | tee stderr.log 3>&-; } > stderr+stdout.log 3>&1

여기에서 제안:

bash stdout+stderr을 한 파일로 리디렉션하고 stderr을 다른 파일로 리디렉션합니다.

나에게는 효과가 없습니다. 두 개의 동일한 파일을 생성하며 오류 파일의 내용은 표준 출력 파일의 내용과 동일합니다.

관련 정보