stderr에 "Permission Denied"가 없는 이유는 무엇입니까? [복사]

stderr에 "Permission Denied"가 없는 이유는 무엇입니까? [복사]

명령이 있습니다. mywritercmd -f /tmp/test 2>&1 > log.txtbash 터미널에서 실행하면 명령이 반환됩니다.error: could not open output file "/tmp/test": Permission denied

그러나 이 오류 메시지는 다음과 같이 기록되지 않습니다.로그.txt파일이 비어있습니다...

왜?

나는 이 메시지가 stderr로 전송된 다음 파일로 전송되어야 한다고 생각하지만 어떻게든 그렇지 않습니다.

답변1

정렬하면 차이가 납니다. 명령줄은 왼쪽에서 오른쪽으로 평가됩니다. 도착하면 2>&1stdout이 있는 곳으로 stderr를 전달하라는 지시가 있습니다. 현재 이 > log.txt부분은 평가되지 않았습니다. 결과적으로 stderr은 터미널에 출력되는 기본 상태로 유지됩니다.

mywritercmd -f /tmp/test > log.txt 2>&1그러면 원하는 동작이 발생하고 오류 메시지가 log.txt 파일에 기록됩니다.

관련 정보