관련 정보를 찾을 수 없는데, stderr의 특정 부분만 파일에 기록하려고 합니다. 예를 들어
실행 tar -xzf file 2>> log.txt
하고 오류 발생
tar: Child returned status 1
명령 이름 없이 Child가 반환한 상태 1 부분만 기록하고 싶습니다.
답변1
tar -xzf file 3>&1 1>&2 2>&3 | grep -oP '^app: \K.*$' | tee logfile
답변2
를 사용하면 zsh
다음을 수행할 수 있습니다.
tar -xzf file 2> >(sed 's/^tar: //' >> file.log)
이렇게 하면 tar
종료 상태가 보존됩니다.
당신 은 이런 일을 할 수 있습니다 ksh
.bash
yash
sed
이 명령을 사용하는 경우file.log
.
다른 옵션은 bash
다음을 사용하는 것입니다:
{ tar -xzf file 2>&1 >&3 3>&- | sed 's/^tar: //' >> file.log 3>&-; } 3>&1
tar_exit_status=${PIPESTATUS[0]}
tar
여러 쉘의 경우 빈 argv[0]을 사용하여 호출 할 수도 있습니다 .
(exec -a '' tar -xzf file)
이 경우 오류 메시지는 다음과 같습니다.
: Child returned status 1