728x90
2> /dev/null은 유닉스/리눅스 쉘에서 자주 사용되는 리디렉션(Redirection) 문법입니다.
기본 개념
표준 입출력(Stream)
유닉스 계열 운영체제에서는 프로그램 실행 시 다음과 같은 3가지 기본 스트림이 자동으로 생성됩니다.
이름 | 번호 | 설명 |
표준 입력(stdin) | 0 | 키보드 입력 등 사용자 입력 |
표준 출력(stdout) | 1 | 프로그램이 출력하는 일반 결과 |
표준 오류(stderr) | 2 | 에러 메시지 등 오류 관련 출력 |
기본 리디렉션 문법
- 출력 리디렉션( > )
echo "Hello" > output.txt
"Hello"라는 출력을 output.txt 파일에 저장(기존내용은 덮어씀)
- 출력 덧붙이기( >> )
echo "More text" >> output.txt
기존 output.txt에 "More text"를 추가함(덮어쓰기 X)
- 에러 리디렉션( 2> )
ls not_exist_file 2> error.log
에러 메시지를 error.log 파일에 저장
- 표준 입력 리디렉션( < )
wc -l < file.txt
file.txt 파일을 표준 입력처럼 사용해서 wc -l 명령어에 전달
2> /dev/null의 해석
- 2 : 표준 오류(stderr)을 의미합니다.
- > : 리디렉션 연산자입니다. "어디론가 보내라"는 의미입니다.
- /dev/null : 특수한 장치 파일로, 모든 데이터를 버리는 쓰레기통입니다. 여기에 쓰여진 데이터는 사라짐
즉, 2 > /dev/null의 의미는 표준 오류 스트림(에러 메시지)를 /dev/null로 보내서 버려라 입니다. 즉, 에러메시지를 화면에 출력하지 않고 없애버리는 것입니다.
활용 예시
ls not_exist_file 2> /dev/null
- ls not_exist_file 은 존재하지 않는 파일을 보려고 해서 에러가 발생합니다.
- 2> /dev/null 덕분에 에러 메시지는 화면에 나타나지 않습니다.
확장 사용 : &>, >/dev/null 2>&1
command > /dev/null 2>&1
- > /dev/null : 표준 출력(stdout)을 버림
- 2>&1 : 표준 오류(stderr)를 표준 출력(stdout)과 동일한 곳으로 보냄(즉, /dev/null)
- 결론 : 모든 출력(정상 + 에러)을 전부 버림
728x90