명령과 해당 명령의 출력을 파일에 저장하는 방법

명령과 해당 명령의 출력을 파일에 저장하는 방법

안녕하세요, 명령의 출력과 출력을 생성하기 위해 실행한 명령을 동일한 파일에 저장하고 싶습니다. 나는 그 중 하나를 이해합니다

*some_command* > file.txt   
*some_command* | tee file.txt

할 수 있지만 두 경우 모두일부 명령 파일에 저장되지 않고 출력만 저장됩니다. 이를 수행할 수 있는 방법이 있습니까?

답변1

명령을 배열에 저장하고 인쇄하고 실행할 수 있습니다.

# Define command
mycmd=(some_command -o "some option")

# Print command
echo "${mycmd[@]}"

# Run command
"${mycmd[@]}" 

당신은 또한 볼 수 있습니다.

이는 명령을 인쇄할 때 따옴표를 제거한다는 점에 유의하십시오.


함수에 넣어보세요:

lognrun(){ echo "$@"; "$@"; }
lognrun some_command -o "some_option" > logfile

답변2

다음 과 함께 서브쉘을 사용하십시오 set -x.

$ ( set -x; printf '%s\n' a b "c d"; ) 2>&1 | tee logfile
+ printf '%s\n' a b 'c d'
a
b
c d

답변3

"script" 명령을 사용하는 것은 어떻습니까?

$ script logfile
$ somecommand
lots of command output...

그러면 쉘에서 수행하는 모든 작업이 로그 파일에 기록됩니다. 중지하려면 Ctrl+D를 누르세요.

명령이 하나만 필요한 경우 "-c" 옵션을 사용할 수 있습니다.

-c, --command 명령
    대화형 셸 대신 명령을 실행하세요.
    이를 통해 스크립트는 프로그램의 출력을 쉽게 캡처할 수 있습니다.
    표준 출력이 tty가 아닌 경우 동작이 다릅니다.

관련 정보