shell(#mode)에서 간단하게 명령어를 통해 테스트를 진행하면서 "/dev/null 2>&1"의 의미를 알아본다,
아래 명령어는 표준 출력을 /dev/null로 redirection 하라는 의미로 표준출력을 버리라는 의미다,
# rm test > /dev/null
하지만, test라는 file이 존재하지 않는 경우 아래와 같은 표준에러가 출력된다,
# rm test > /dev/null
rm: cannot remove 'test': No such file or directory
#
rm: cannot remove 'test': No such file or directory
#
방금 언급했지만, 이것은 "표준출력"이 아닌 "표준에러"이기 때문에 화면에 출력이 된것이다,
다시 강조하면 /dev/null 로 redirection 을 통해 화면 출력을 하지 않는것은 표준출력에 한해서 해당된다.
자 그렇다면, 표준에러를 버리고 싶다면 아래와 같이 사용하도록 하자,
# rm test > /dev/null 2>&1
2>&1 는 표준에러를 표준출력으로 redirection 하라는 의미다.
(0, 1, 2는 각각 표준입력, 표준출력, 그리고 표준에러를 의미)
정리하면 "rm test"의 표준출력을 /dev/null로 버리는데, 표준에러는 표준출력으로 redirection한다.
결국 결과는 표준출력이 되기 때문에 /dev/null로 버려지고, 화면에 결과가 뿌려지지 않게 되는 것이다.
/dev/null과 2>&1를 같이 사용하지 않는 경우 위의 예제는 결국 표준출력되기 때문에 화면에 에러 내용이 출력된다,
출처 - http://nmap.tistory.com/115
'System > Common' 카테고리의 다른 글
리눅스 파티션 나누기 (0) | 2012.04.03 |
---|---|
HP ProLiant DL160 G6 Server series (491532-B21) - specifications and warranty (0) | 2012.03.31 |
APUE2(Advanced Programming in the UNIX Environment) 정리 (0) | 2012.02.12 |
PID 생성 관련 (0) | 2012.02.11 |
윈도우에서 ntkrnlmp.exe 파일은 (0) | 2012.02.09 |