[번외] 표준 출력과 표준 오류

구분 설명 파일 디스크립터
표준 출력 정상 결과 출력용 스트림 1
표준 오류 에러 메시지 출력용 스트림 2

표준 출력 (Standard Output, stdout)

  • 파일 디스크립터: 1
  • 설명: 프로그램이 성공적으로 실행되었을 때 결과를 출력하는 기본 출력 스트림이다.
  • 1>> 로 간략하게 사용할 수 있다.
  • 사용 예시: 이 명령은 “Hello, World!”를 표준 출력 대신 output.txt 파일에 기록한다.

      echo "Hello, World!" > output.txt
    

표준 오류 (Standard Error, stderr)

  • 파일 디스크립터: 2
  • 설명: 프로그램이 실행되는 동안 발생하는 오류 메시지를 출력하는 기본 오류 스트림이다. 표준 출력과는 별도로 처리된다.
  • 사용 예시: 위 명령은 non_existent_file을 찾을 수 없다는 오류 메시지를 error.txt 파일에 출력한다.

      ls non_existent_file 2> error.txt
    

표준 출력과 표준 오류의 리다이렉션

리다이렉션을 통해 표준 출력과 표준 오류를 파일로 보내거나 다른 스트림으로 보낼 수 있다.

표준 출력만 리다이렉트

command > output.txt
  • 설명: command의 표준 출력을 output.txt 파일로 리다이렉트한다.
  • 결과: 표준 오류는 여전히 터미널에 출력된다.

표준 오류만 리다이렉트

command 2> error.txt
  • 설명: command의 표준 오류를 error.txt 파일로 리다이렉트한다.
  • 결과: 표준 출력은 여전히 터미널에 출력된다.

표준 출력과 표준 오류 모두 리다이렉트

1. 2>&1 사용

command > output.txt 2>&1
  • 설명: command의 표준 출력은 output.txt 파일로 리다이렉트하고, 표준 오류는 표준 출력으로 리다이렉트한다.
  • 결과: 표준 출력과 표준 오류 모두 output.txt 파일에 기록된다.

2. &> 사용 (Bash 전용)

command &> output.txt
  • 설명: command의 표준 출력과 표준 오류를 모두 output.txt 파일로 리다이렉트한다.
  • 결과: 표준 출력과 표준 오류 모두 output.txt 파일에 기록된다.

&> 리다이렉션의 의미 (Bash 전용)

  • &>는 표준 출력과 표준 오류를 동시에 리다이렉트하는 간편한 구문이다. 이는 > output.txt 2>&1와 동일한 효과를 가지며, Bash에서만 사용 가능하다.