Linux와 커맨드 라인 기초

$ ls
a.txt
$ ls a.txt nofile 2>&1 > out.txt

위와 같이 a.txt는 있고 nofile은 없는 디렉터리에서 마지막 명령을 실행했다. 결과로 올바른 것은?

  1. A오류 줄만 out.txt에 쓰이고, a.txt 줄은 화면에 표시된다
  2. B오류 줄도 a.txt 줄도 out.txt에 쓰이고, 화면에는 아무것도 표시되지 않는다
  3. 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을 씁니다.

이 분야 연습하기 분야로 돌아가기

Linux와 커맨드 라인 기초의 다른 문제

  1. 위의 조작에서 마지막 명령이 출력하는 값으로 올바른 것은?
  2. 위의 조작에서 마지막 grep이 출력하는 줄로 올바른 것은?
  3. 선택지에서는 줄 맨 앞의 공백을 빼고 나타낸다. 위의 조작에서 마지막 명령이 출력하는 줄로 올바른 것은?
  4. 서버의 로그 파일 /var/log/app.log에 나중에 추가되는 줄을, 추가될 때마다 화면에 계속 표시하고 싶다. 적절한 명령은?
  5. 쉼표로 구분된 줄에서 열을 꺼내는 위의 명령의 출력으로 올바른 것은?