[번외] 표준 출력과 표준 오류
구분 | 설명 | 파일 디스크립터 |
---|---|---|
표준 출력 | 정상 결과 출력용 스트림 | 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에서만 사용 가능하다.