간단한 명령문을 사용하여 bash 스크립트의 표준 출력 및 오류 출력을 파일로 쉽게 리디렉션하고 exec
출력을 콘솔로 삭제할 수 있습니다.
exec &>>/var/log/backup.log
하지만 어떻게 exec
두 파일에 쓰고 첫 번째 파일에 추가하고 두 번째 파일을 덮어쓰나요? 어쩌면 tee
마법을 사용해야 할 수도 있습니다. 콘솔을 무음으로 만드는 방법도 찾아야 합니다.
그 이유는 내 백업 스크립트 때문입니다. 최신 백업의 이벤트를 기본 로그에 추가하고 이러한 이벤트를 각 백업 세션마다 다시 작성해야 하는 현재 백업 로그에만 기록하고 싶습니다(이전 내용 지우기).
답변1
가능하며 프로세스 교체가 필요합니다. tee
나머지를 호출하고 덮어쓴 파일로 리디렉션하는 하위 프로세스로 스트림을 리디렉션합니다 .
exec &> >(tee -a backup.log > overwritten.log)
스크립트가 종료되거나 다른 리디렉션이 설정될 때까지 스트림이 열려 있기 때문에 전체 스크립트에서 파일을 한 번만 덮어쓰게 됩니다.