[bash] Bash를 사용하여 명령의 모든 출력을 억제하려면 어떻게합니까?

매개 변수가있는 프로그램을 실행하는 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