매개 변수가있는 프로그램을 실행하는 Bash 스크립트가 있습니다. 그 프로그램은 어떤 상태를 출력합니다 (이 작업을 수행하고 있습니다 …). 이 프로그램은 조용히 할 수있는 옵션이 없습니다. 스크립트가 아무것도 표시하지 못하게하려면 어떻게합니까?
Windows ‘ echo off ‘와 같은 것을 찾고 있습니다.
답변
다음은 표준 출력을 널 장치 (비트 버킷)로 보냅니다.
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
답변
같은 것
script > /dev/null 2>&1
그러면 표준 출력 과 오류 출력 이 방지되어 둘 다로 리디렉션됩니다 /dev/null
.
답변
시험
: $(yourcommand)
:
“아무것도하지”의 줄임말입니다.
$()
단지 당신의 명령입니다.
답변
일부 상황에 적합한 대안은 명령 결과를 변수에 지정하는 것입니다.
$ 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