최적의 설정으로 특정 컴퓨터를 자동으로 구성하는 쉘 스크립트를 작성 중입니다. 에코 출력을 제외하고 이 스크립트의 모든 출력을 숨기고 싶습니다. 가능합니까?
답변1
스크립트를 시작하십시오.
exec 3>&1 1>/dev/null 2>&1
이는 stdout의 원래 파일 설명자를 &3에 저장한 다음 stdout 및 stderr을 /dev/null로 리디렉션합니다. 무언가를 인쇄하고 싶을 때마다 출력을 &3으로 리디렉션하십시오. 예를 들면 다음과 같습니다.
echo "This message won't be output"
echo "But this one will" >&3
이 세부 사항을 숨기려면 fd 3에 해당하는 함수를 정의할 수 있습니다.
say() {
echo >&3 "$@"
}
say "This goes to the log"
답변2
/dev/null
표준 출력을 다음으로 리디렉션할 수 있습니다.
1>/dev/null
출력을 생성할 스크립트의 각 줄 끝에 있습니다.
다음을 추가하여 동일한 방식으로 오류를 리디렉션할 수 있습니다.
2>/dev/null
대부분의 명령에는 콘솔에 대한 일반 출력을 끄는 옵션도 있습니다 -q
. 사용 중인 명령에 대한 맨페이지를 확인하십시오.