[linux] 표준출력(STDOUT), 표준에러(STDERR), /dev/null

조회 24,160 · 댓글 0
xxmoon작성자2016년 9월 4일
Unix나 Linux 명령어를 사용하다 보면 표준출력, 표준에러, /dev/null 등을 사용한 shell이 많이 있습니다
이에 대해 간단히 정리합니다 ~

. 표준출력 : shell에서 실행시 정상 종료시의 메시지로 화면에 출력됨, 파일 디스크립터는 1번
. 표준에러 : shell에서 실행시 발생한 에러 메시지로 화면에 출력됨. 파일 디스크립터는 2번
. /dev/ull : 출력이 파기되어, 아무것도 출력이 되지 않음. (쓰레기통으로 표현됨)
. 2>&1 : 2(표준에러)를 1(표준출력)으로 보내라.
. >/dev/null 2>&1 : 앞에 1이 생략 (1>/dev/null 2>&1) → 표준출력,표준에러 다 버려라.

(예제)
. 표준출력


$ echo sample
sample

. 표준에러


$ ls error
ls: cannot access error: No such file or directory

. /dev/null에 출력


$ echo sample >& /dev/null
→ 아무것도 일어나지 않음
$ ls error >&/dev/null
→ 아무것도 일어나지 않음


(좀더 자세한 예제 : sample.sh)


#!/bin/bash

# STDOUT(1)으로 표시
echo "STDOUT(1)"

# STDERR(2)로 표시
# 표준에러러(1→2)로 리다이렉트시켜 출력
echo "STDERR(2)" 1>&2

exit 0


. 실행경과


# 1(표준출력) 를 /dev/null로 보냄으로서, 2(표준에러)만 출력
$ ./sample.sh 1>/dev/null
STDERR(2)

# 2(표준에러) 를 /dev/null로 보냄으로서, 1(표준출력)만 출력
$ ./sample.sh 2>/dev/null
STDOUT(1)

로그인 후 답글을 남길 수 있습니다.