stdout, stderr 및 로깅에 스크립트 명령 사용

stdout, stderr 및 로깅에 스크립트 명령 사용

나는 remove.sh다음을 포함하고 있습니다 :

rm -v test.tmp

나는 install.sh다음을 포함하고 있습니다 :

script remove.log -c './remove.sh'

존재 여부에 관계없이 화면에는 관련 메시지가 표시되지 않지만 test.tmp스크립트 명령이 생성되는 것을 보려면 어떻게 해야 합니까?rmremoved 'test.tmp'rm: cannot remove 'test.tmp': No such file or directoryremove.log

답변1

귀하의 질문이 "명령의 stderr 출력을 억제하는 방법"인 경우 대답은 다음과 같습니다.

command 2> /dev/null

이렇게 하면 stderr(파일 설명자 2라고도 함)을 리디렉션하여 /dev/null수신한 내용을 모두 삭제합니다.

그러나 이 rm명령은 -f파일이 존재하지 않는 경우 오류 메시지가 생성되지 않도록 하는 플래그를 지원합니다.

$ rm file_that_does_not_exist
rm: file_that_does_not_exist: No such file or directory
$ rm -f file_that_does_not_exist
$

답변2

script이것에는 과잉입니다. 예, 작동합니다. 하지만 이는 스크립트의 목적이 아닙니다. 스크립트는 TTY에 직접 액세스하고 STDOUT/STDERR을 사용하지 않는 애플리케이션을 위한 것입니다.

기본 셸 리디렉션을 사용하면 이 작업을 쉽게 수행할 수 있습니다.

./remove.sh &> remove.log

관련 정보