모든 bash 스크립트 출력(스크립트 내에서)을 두 개의 파일로 리디렉션합니다. 하나는 추가용이고 다른 하나는 다시 작성하지만 콘솔 출력은 삭제합니다.

모든 bash 스크립트 출력(스크립트 내에서)을 두 개의 파일로 리디렉션합니다. 하나는 추가용이고 다른 하나는 다시 작성하지만 콘솔 출력은 삭제합니다.

간단한 명령문을 사용하여 bash 스크립트의 표준 출력 및 오류 출력을 파일로 쉽게 리디렉션하고 exec출력을 콘솔로 삭제할 수 있습니다.

exec &>>/var/log/backup.log

하지만 어떻게 exec두 파일에 쓰고 첫 번째 파일에 추가하고 두 번째 파일을 덮어쓰나요? 어쩌면 tee마법을 사용해야 할 수도 있습니다. 콘솔을 무음으로 만드는 방법도 찾아야 합니다.

그 이유는 내 백업 스크립트 때문입니다. 최신 백업의 이벤트를 기본 로그에 추가하고 이러한 이벤트를 각 백업 세션마다 다시 작성해야 하는 현재 백업 로그에만 기록하고 싶습니다(이전 내용 지우기).

답변1

가능하며 프로세스 교체가 필요합니다. tee나머지를 호출하고 덮어쓴 파일로 리디렉션하는 하위 프로세스로 스트림을 리디렉션합니다 .

exec &> >(tee -a backup.log > overwritten.log)

스크립트가 종료되거나 다른 리디렉션이 설정될 때까지 스트림이 열려 있기 때문에 전체 스크립트에서 파일을 한 번만 덮어쓰게 됩니다.

관련 정보