이 명령을 실행할 때 (여기서 fail.cpp는 컴파일러 오류로 채워진 간단한 프로그램 임) 오류는 화면에 직접 출력되지 않고 오히려 fail.out 파일에서 출력됩니다. bash는 내 소개 이해에서bash : 리디렉션 출력과의 혼동
g++ fail.cpp > fail.out 2>&1
, 이것은 의미한다 : 2>&1
는 표준 출력이 새로운 장소에 (일명 2) 표준 오류 리디렉션 동안, >
이 (일명, 1 표준 출력) 프로그램 출력을 리디렉션이 fail.out 할 파일입니다. (?) :
g++ fail.cpp 2>&1 > fail.out
지금, 오류 메시지가 화면에 직접 가서 fail.out 빈 파일입니다
그러나 명령의 순서를 변경가 만드는 상황이 다르게 발생합니다.
왜 이런가요? 위의 명령과 같은 생각입니다.이 명령이 생성하는 오류를 stdout (2>&1
)으로 리디렉션하고 fail.out 파일로 다시 리디렉션합니다. 그것은 내가 누락 된 작전의 명령인가?
[리디렉션] (http://en.wikipedia.org/wiki/Redirection_%28computing%29) – devnull
[bash 매뉴얼] (http://www.gnu.org/software/)의 좋은 설명 bash/manual/html_node/Redirections.html). –