터미널 창에서 명령줄 출력을 숨기는 방법은 무엇입니까?

터미널 창에서 명령줄 출력을 숨기는 방법은 무엇입니까?

다음은 간단한 코드입니다.

#!/bin/bash -ef
echo "Hello" > log.txt #saving the output of this command log.txt
command1 #this command running and showing it is output in terminal
command2 > log.txt #saving the output of this command log.txt
command3 #this command running and showing it is output in terminal

스크립트에 많은 명령이 있는 경우. 특정 명령의 출력을 숨기고 이 출력이 나머지 명령의 터미널 창에 표시되도록 할 수 있습니까? 동시에 모든 명령의 출력을 log.txt에 저장하는 방법(출력 표시 여부)

답변1

다음과 같이 일시적으로 출력을 파일로 리디렉션할 수 있습니다.

exec 1> log.txt
echo -n "Hello" # Hello will be written to log.txt
# Some more commands here
# whose stdout will be
# written to log.txt
exec 1> /dev/tty # Redirect stdout back to your terminal

보다 일반적인 접근 방식(stdout이 터미널이 아니고 원래 상태로 복원하려는 경우):

exec 3>&1 # Point a new filehandle to the current stdout
exec 1> log.txt 
echo -n "Hello" # Hello will be written to log.txt
# Some more commands here
# whose stdout will be
# written to log.txt
exec 1> &3 # Restore stdout to what it originally was
exec 3> &- # Close the temporary filehandle

감사해요셀라다의 리뷰이것을 지적하십시오.

관련 정보