티스토리 뷰

이 파일은 null device file로 해당 파일에 어떠한 내용이 쓰여지든 버려진다.

이러한 특성으로 명령어 실행으로 나오는 출력이 나오게 하고 싶지 않을 때 사용한다.

간단한 예를 들면 다음과 같다.

echo 'Hello from JournalDev' > /dev/null

echo는 모니터로 출력을 하는데 위에서 처럼이 /dev/null로 redirection을 하게 되면 아무것도 출력이 되지 않는다. 그러면 에러 메시지도 안나오게 할 수 있을까?

myErrorCMD! > /dev/null
# output
# bash: myErrorCMD!: command not found

예상 밖으로 에러는 그대로 출력이된다. 이는 stdoutredirection 했기 때문이다. 에러 메시지는 stderr 스트림으로 출력이 된다. 이를 반영해 다음과 같이 작성한다.

# stdout(표준 출력), stderr(표준에러 출력)를 모두 redirection
myErrorCMD! &>/dev/null
# output: nothing

이렇게 하면 모든 출력이 /dev/null 로 redirection 되면서 에러 메시지가 출력이 되지 않는다.

이 내용은 shell script 작성된 것을 보다보면 간간히 보이기 때문에 알아두면 좋을것 같다.

 

PS: docker container keep alive

여담으로 tail 명령어를 통해서 컨테이너를 유지시킬 수 있다. 이때 /dev/null을 통해서 아무것도 출력이 안되게 한다.

# background process 실행이 없는 컨테이너 유지 시 사용
docker run -d dimitri/pgloader:latest tail -F /dev/null

 

참고

https://stackoverflow.com/questions/637827/redirect-stderr-and-stdout-in-bash

https://tldp.org/LDP/abs/html/io-redirection.html

댓글