명령이 있습니다. 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 파일에 기록됩니다.