다음은 간단한 코드입니다.
#!/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
감사해요셀라다의 리뷰이것을 지적하십시오.