Linux와 커맨드 라인 기초
$ ls
a.txt
$ ls a.txt nofile 2>&1 > out.txt위와 같이 a.txt는 있고 nofile은 없는 디렉터리에서 마지막 명령을 실행했다. 결과로 올바른 것은?
- A오류 줄만 out.txt에 쓰이고, a.txt 줄은 화면에 표시된다
- B오류 줄도 a.txt 줄도 out.txt에 쓰이고, 화면에는 아무것도 표시되지 않는다
- Ca.txt 줄만 out.txt에 쓰이고, 오류 줄은 화면에 표시된다
정답과 해설 보기
정답: C. a.txt 줄만 out.txt에 쓰이고, 오류 줄은 화면에 표시된다
리다이렉션은 왼쪽부터 순서대로 처리됩니다. '2>&1'은 '표준 오류 출력(2)을 그 시점의 표준 출력(1)의 행선지와 같게 한다'는 뜻이며, 이 시점의 표준 출력은 아직 화면이므로 오류는 화면에 나옵니다. 그 뒤의 '> out.txt'로 표준 출력만 out.txt로 바뀌므로, 파일에는 ls의 일반 출력인 a.txt 줄만 쓰입니다. 둘 다 파일에 쓰려면 'ls a.txt nofile > out.txt 2>&1'처럼 먼저 표준 출력을 바꾼 다음 2>&1을 씁니다.