stdout으로 출력하고 파일로 파이핑하는 동안 Bash 스크립트에서 해당 출력을 침묵시키는 프로그램이 있습니다.
예를 들어, 프로그램을 실행하면 다음이 출력됩니다.
% myprogram
% WELCOME TO MY PROGRAM
% Done.
다음 스크립트가 터미널에 아무것도 출력하지 않기를 원합니다.
#!/bin/bash
myprogram > sample.s
stdout으로 출력하고 파일로 파이핑하는 동안 Bash 스크립트에서 해당 출력을 침묵시키는 프로그램이 있습니다.
예를 들어, 프로그램을 실행하면 다음이 출력됩니다.
% myprogram
% WELCOME TO MY PROGRAM
% Done.
다음 스크립트가 터미널에 아무것도 출력하지 않기를 원합니다.
#!/bin/bash
myprogram > sample.s
답변:
stderr로 출력되면 침묵시킬 것입니다. 파일 디스크립터 2를 재지 정하여이를 수행 할 수 있습니다.
# Send stdout to out.log, stderr to err.log
myprogram > out.log 2> err.log
# Send both stdout and stderr to out.log
myprogram &> out.log # New bash syntax
myprogram > out.log 2>&1 # Older sh syntax
# Log output, hide errors.
myprogram > out.log 2> /dev/null
&>
bash 4보다 훨씬 오래되었습니다.
&>
소개를 링크 할 수 있습니까 ? : o
>>&
4.0에 도입 되었음을 나타냅니다 . 언급은 &>
없지만 CHANGES는 2.0으로 돌아가므로 이미 1.x에 있다고 생각합니다.
git blame
에 redir.c
1998 포인트 현재의 코드베이스에서 여전히 가장 오래된 발생을 커밋합니다.
그러면 stderr (설명자 2)가 stdout 인 파일 설명자 1로 경로 재 지정됩니다.
2>&1
이제 이것을 수행하면 stdout을 파일로 리디렉션합니다. sample.s
myprogram > sample.s
두 명령을 결합하면 stderr 및 stdout이 모두 sample로 리디렉션됩니다.
myprogram > sample.s 2>&1
/dev/null
응용 프로그램을 완전히 자동으로 끄려면 리디렉션 하십시오.
myprogram >/dev/null 2>&1
myprogram >/dev/null 2>&1
(전의 웨지 /dev/null
와 방향 전환 순서).
myprogram &>/dev/null
충분?
모든 출력 :
scriptname &>/dev/null
가지고 다닐 수 있는:
scriptname >/dev/null 2>&1
가지고 다닐 수 있는:
scriptname >/dev/null 2>/dev/null
최신 배쉬 (휴대용 아님) :
scriptname &>-
-
하고 &>
비 휴대용 Bourne 쉘 확장 기능입니다.
echo moo 1>&-
파일 디스크립터 1이 닫혀 있기 때문에 휴대용 등가 에서 오류가 발생합니다.-bash: echo: write error: Bad file descriptor
STDOUT과 STDERR을 모두 [모든 것] 원하는 경우 가장 간단한 방법은 다음과 같습니다.
#!/bin/bash
myprogram >& sample.s
그런 다음과 같이 실행하면 ./script
터미널로 출력되지 않습니다. :)
"> &"는 STDERR 및 STDOUT을 의미합니다. 는 &
또한 파이프와 동일한 방식으로 작동 : ./script |& sed
그 SED에 모든 것을 보내드립니다
a 2>&1 | b 2>&1 | c