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

+ Recent posts