Bash 스크립트에서 출력을 무음화하는 방법은 무엇입니까?
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
stdout으로 stderr 리디렉션
그러면 stderr(설명자 2)이 stdout인 파일 설명자 1로 리디렉션됩니다.
2>&1
stdout을 파일로 리디렉션
이제 이 작업을 수행할 때 stdout을 파일로 리디렉션합니다.sample.s
myprogram > sample.s
stderr 및 stdout을 파일로 리디렉션
두 명령을 결합하면 stderr과 stdout이 모두 sample.s로 리디렉션됩니다.
myprogram > sample.s 2>&1
stderr 및 stdout을 /dev/null로 리디렉션
다음으로/dev/null
응용프로그램을 완전히 침묵시키려면 이 옵션을 선택합니다.
myprogram >/dev/null 2>&1
모든 출력:
scriptname &>/dev/null
휴대용:
scriptname >/dev/null 2>&1
휴대용:
scriptname >/dev/null 2>/dev/null
최신 bash(휴대용 없음)의 경우:
scriptname &>-
여전히 답을 찾기 어려운 경우, 특히 출력용 파일을 생성한 경우 명확한 대안을 선택할 수 있습니다. echo "hi" | grep "use this hack to hide the oputut :) "
STDOUT와 STDERR 모두 [모든 것]을(를) 원할 경우 가장 간단한 방법은 다음과 같습니다.
#!/bin/bash
myprogram >& sample.s
그럼 다음과 같이 실행합니다../script
단말기로 출력을 받지 못할 것입니다.:)
">&"은 STDERR 및 STDOUT를 의미합니다.그&
파이프에서도 동일한 방식으로 작동합니다../script |& sed
모든 것을 sed에게 보낼 것입니다.
사용:
myprogram &>/dev/null
출력을 얻지 못함
유용한 변형:
숨길 프로그램이 전혀 없는 경우에도 STDOUT를 숨기면서 파일의 STDERR만 가져옵니다.(결코 매달리지 않음):
stty -echo && ./programMightNotExist 2> errors.log && stty echo
완전히 분리하고 모든 것을 침묵시킴, 심지어 상위 스크립트를 삭제해도 중단되지 않음
./prog
(와 똑같이 행동함)nohup
):./prog </dev/null >/dev/null 2>&1 &
nohup
는 다음과 같이 완전히 분리하는 데도 사용할 수 있습니다.nohup ./prog &
로그 파일
nohup.out
스크립트와 별도로 생성됩니다. 사용tail -f nohup.out
그것을 읽기 위해.
참고: 이 답변은 "셸 스크립트 Linux를 실행하는 동안 에코를 끄는 방법"이라는 질문과 관련이 있으며, 이 질문에는 중복된 것으로 표시되었습니다.
에코를 실제로 끄려면 다음 명령을 사용합니다.
딱딱한 느낌의
(예를 들어, 암호를 입력하려고 할 때 암호를 읽을 수 없도록 하려는 경우).스크립트가 끝날 때 에코를 켜야 합니다. 그렇지 않으면 스크립트를 실행하는 사용자는 그 이후로 입력한 내용을 볼 수 없습니다.실행 시 에코를 켜려면:
stty echo
오류 발생 시 출력만 해당:
그래서 [명령]
언급URL : https://stackoverflow.com/questions/2292847/how-to-silence-output-in-a-bash-script
'programing' 카테고리의 다른 글
ON CONCLIVE 절에서 multipleconflict_target 사용 (0) | 2023.05.28 |
---|---|
ScrollViewer가 스택 패널 내에서 작동하도록 하려면 어떻게 해야 합니까? (0) | 2023.05.28 |
C++에서 벡터를 초기화하는 방법 (0) | 2023.05.28 |
nodejs 및 express로 만든 REST API에서 응답 상태 및 JSON 내용을 올바르게 설정하는 방법 (0) | 2023.05.28 |
다른 스레드가 이 개체를 소유하고 있기 때문에 호출 스레드가 이 개체에 액세스할 수 없습니다. (0) | 2023.05.28 |