Bash를 사용하여 명령의 모든 출력을 억제하는 방법은 무엇입니까?
매개 변수가있는 프로그램을 실행하는 bash 스크립트가 있습니다. 그 프로그램은 어떤 상태를 출력합니다 (이 작업을 수행하고 ...). 이 프로그램은 조용히 할 수있는 옵션이 없습니다. 스크립트가 아무것도 표시하지 못하게하려면 어떻게합니까?
나는 창문 "에코 오프"와 같은 것을 찾고 있습니다.
다음은 표준 출력을 널 장치 (비트 버킷)로 보냅니다.
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
참고 URL : https://stackoverflow.com/questions/617182/how-to-suppress-all-output-from-a-command-using-bash
'IT' 카테고리의 다른 글
Linux에서 SCP 복사 중 경로에서 공백을 피하는 방법은 무엇입니까? (0) | 2020.03.27 |
---|---|
전체 네임 스페이스없이 유형 이름 가져 오기 (0) | 2020.03.27 |
장고 개발 IDE (0) | 2020.03.27 |
힘내 분기 명령은 'less'처럼 동작합니다 (0) | 2020.03.27 |
배열에 새로운 요소를 추가하는 방법? (0) | 2020.03.27 |