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

  • xmoon
    (xmoon)
  • xmoon's Avatar 이 글의 작성자
  • Offline
  • Newbie
  • Newbie
더보기
04 Sep 2016 17:29 - 04 Sep 2016 17:30 #1178 작성자: xmoon
xmoon 님의 글: [linux] 표준출력(STDOUT), 표준에러(STDERR), /dev/null
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)
Time to create page: 0.047 seconds
Powered by Kunena Forum