답변:
다음은 표준 출력을 널 장치 (비트 버킷)로 보냅니다.
scriptname >/dev/null
또한 오류 메시지를 보내려면 다음 중 하나를 사용하십시오 (첫 번째는 모든 쉘에서 작동하지 않을 수 있음).
scriptname &>/dev/null
scriptname >/dev/null 2>&1
scriptname >/dev/null 2>/dev/null
메시지를 기록하고 싶지만 표시하지 않으려면 다음 /dev/null
과 같은 실제 파일로 바꾸십시오 .
scriptname &>scriptname.out
완전성을 위해 Windows cmd.exe ( "nul"은 "/ dev / null"에 해당)에서 다음과 같습니다.
scriptname >nul 2>nul
echo foo > $(tty)
스크립트를 넣고 실행하십시오 ./test.sh &> /dev/null
. 출력은 여전히 터미널에 인쇄됩니다. 물론 이러한 명령을 사용하지 않는 스크립트를 작성하는 경우에는 문제가되지 않습니다.
/dev/null
은 Cygwin에 존재하므로 사용할 필요가 없습니다 nul
.
같은 것
script > /dev/null 2>&1
그러면 표준 출력 과 오류 출력 이 방지되어 둘 다로 리디렉션됩니다 /dev/null
.
2>/dev/null
시험
: $(yourcommand)
:
"아무것도하지"의 줄임말입니다.
$()
단지 당신의 명령입니다.
0
(성공)입니다. false
항상 1
(실패)를 반환 하는 명령 을 사용하는 예를 보자 . 예를 들어 ( echo foo | tee file ; false ) && echo bar
표시합니다 foo
. 트릭을 사용하여 출력을 억제합니다 ( : $(echo foo | tee file ; false) ) && echo bar
.. 그러나 bar
반환 상태 코드는 0
(이것은에서 반환 된 상태 코드가 false
아님)을 의미합니다. 이 제한을 제공하여 답변을 업데이트하십시오. 건배
DUMMY=$(yourcommand)
어때요? 언급 한 제한이 없습니다. :)
DUMMY=$( echo foo | tee file ; false ) && echo bar
이 아무 것도 표시하지 않습니다. 그리고 명령이 DUMMY=$( echo foo | tee file ; true ) && echo bar
표시됩니다 bar
. 귀하의
일부 상황에 적합한 대안은 명령 결과를 변수에 지정하는 것입니다.
$ DUMMY=$( grep root /etc/passwd 2>&1 )
$ echo $?
0
$ DUMMY=$( grep r00t /etc/passwd 2>&1 )
$ echo $?
1
Bash 및 기타 POSIX 명령 행 인터프리터는 변수 지정을 명령으로 간주하지 않으므로 현재 명령의 리턴 코드가 존중됩니다.
참고 :typeset
또는 declare
키워드를 사용한 할당 은 명령으로 간주되므로 하위 쉘에서 실행 된 명령이 아니라 할당 자체 인 경우 평가 된 리턴 코드는 다음과 같습니다.
$ declare DUMMY=$( grep r00t /etc/passwd 2>&1 )
$ echo $?
0
andynormancx 'post 와 같이 이것을 사용하십시오 (유닉스 환경에서 작업하는 경우).
scriptname > /dev/null
또는 이것을 사용할 수 있습니다 (Windows 환경에서 작업중인 경우).
scriptname > nul
Linux 문서 프로젝트 에서이 예제를 살펴보십시오 .
3.6 샘플 : stderr 및 stdout 2 파일
이것은 프로그램의 모든 출력을 파일로 저장합니다. 명령이 절대 침묵으로 전달되도록하려면 때때로 cron 항목에 적합합니다.
rm -f $(find / -name core) &> /dev/null
즉,이 간단한 리디렉션을 사용할 수 있습니다.
/path/to/command &>/dev/null
스크립트에서 출력 할 줄에 다음을 추가 할 수 있습니다.
some_code 2>>/dev/null
그렇지 않으면 시도해 볼 수도 있습니다
some_code >>/dev/null
>>
)입니까?