명령이 있습니다. mywritercmd -f /tmp/test 2>&1 > log.txt
bash 터미널에서 실행하면 명령이 반환됩니다.error: could not open output file "/tmp/test": Permission denied
그러나 이 오류 메시지는 다음과 같이 기록되지 않습니다.로그.txt파일이 비어있습니다...
왜?
나는 이 메시지가 stderr로 전송된 다음 파일로 전송되어야 한다고 생각하지만 어떻게든 그렇지 않습니다.
답변1
정렬하면 차이가 납니다. 명령줄은 왼쪽에서 오른쪽으로 평가됩니다. 도착하면 2>&1
stdout이 있는 곳으로 stderr를 전달하라는 지시가 있습니다. 현재 이 > log.txt
부분은 평가되지 않았습니다. 결과적으로 stderr은 터미널에 출력되는 기본 상태로 유지됩니다.
mywritercmd -f /tmp/test > log.txt 2>&1
그러면 원하는 동작이 발생하고 오류 메시지가 log.txt 파일에 기록됩니다.