
특정 컴퓨터를 최상의 설정으로 자동 구성하는 셸 스크립트를 작성 중입니다. 에코 출력을 제외하고 이 스크립트의 모든 출력을 숨기고 싶습니다. 가능합니까?
답변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
다음을 추가하여 stdout을 리디렉션할 수 있습니다.
1>/dev/null
출력을 생성하는 스크립트의 각 줄 끝에.
다음을 추가하여 동일한 방식으로 오류를 리디렉션할 수 있습니다.
2>/dev/null
대부분의 명령에는 콘솔에 대한 일반 출력을 끄는 옵션도 있습니다 -q
. 사용하는 명령의 맨페이지를 확인하세요.