![터미널 - 명령 출력을 파일로 리디렉션하는 방법은 무엇입니까? [복사]](https://linux55.com/image/222808/%ED%84%B0%EB%AF%B8%EB%84%90%20-%20%EB%AA%85%EB%A0%B9%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%ED%8C%8C%EC%9D%BC%EB%A1%9C%20%EB%A6%AC%EB%94%94%EB%A0%89%EC%85%98%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
명령 출력을 로그 파일에 추가하고 이를 터미널에 인쇄하려면 다음 명령을 사용합니다.
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=''
.