터미널 - 명령 출력을 파일로 리디렉션하는 방법은 무엇입니까? [복사]

터미널 - 명령 출력을 파일로 리디렉션하는 방법은 무엇입니까? [복사]

명령 출력을 로그 파일에 추가하고 이를 터미널에 인쇄하려면 다음 명령을 사용합니다.

ls 2>&1 | tee -a log.txt

실행된 명령을 리디렉션할 수 있나요? 그러면 샘플 콘텐츠는 log.txt다음과 같습니다.

ls
file1
file2
dir1

답변1

이를 일반화하기 위해 도우미 함수를 추가할 수 있습니다.

#!/bin/bash

logged() {
  { echo "$1"; "$@"; } 2>&1 | tee -a log.txt
}

# Will run command ls with output logging
logged ls
logged ls -t /home
...

실행된 명령을 "기록"하는 또 다른 일반적인 방법은 xtrace( set -x)이지만 상황에 적합하지 않을 수 있습니다. 한 번 시도해 보고 싶다면 적어도 설정을 통해 일반적인 "+" 접두사를 제거할 수 있습니다 PS4=''.

관련 정보