명령 출력을 로그 파일에 추가하고 이를 터미널에 인쇄하려면 다음 명령을 사용합니다.
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=''
.