/dev/null과 함께 설명자를 사용하는 이유는 무엇입니까?

/dev/null과 함께 설명자를 사용하는 이유는 무엇입니까?

난 이해가 안 돼요. 일부 튜토리얼에서 사람들이 이와 같은 설명자를 사용하는 것을 보았습니다(출력 및 오류용).

command 1> /dev/null
command 2> /dev/null

그런데 왜 이런 일을 하는 걸까요? 화면이나 파일에서는 출력을 볼 수 없습니다. 방금 사라졌습니다. 명령이나 그와 유사한 것을 테스트합니까?

답변1

때로는 출력을 보고 싶지 않을 때도 있습니다. 많은 도구는 stdout 또는 stderr에서 "쓸모 없는" 내용을 많이 인쇄하며 때로는 도구가 작업을 수행하기 -q/--quite위해 출력 리디렉션과 같은 기능을 지원하지 않는 경우 이를 무시하고 싶을 때도 있습니다 . /dev/null도구의 주요 기능이 무언가를 인쇄하는 것이 아니라면 성공 또는 실패에만 관심이 있을 수 있으며 이에 대한 반환 코드를 사용하게 됩니다(특히 스크립트에서).

예를 들어 특정 도구가 설치되어 있는지 확인하려고 할 수 있습니다. tool --version또는 같은 것을 확인하고 싶을 수도 있지만 which tool도구의 버전이나 경로에는 별로 관심이 없으며 도구가 사용 가능하고 반환 코드만 있으면 충분합니다. 예를 들어, 사용자에게 필요한 모든 종속성이 있는지 확인하려는 스크립트에서

$ which xyz >/dev/null 2>&1 || echo "you need to install xyz to proceed"
you need to install xyz to proceed

보다 좋아 보인다

$ which xyz || echo "you need to install xyz to proceed"
/usr/bin/which: no xyz in (/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/vtrefny/.local/bin:/home/vtrefny/bin)
you need to install xyz to proceed

관련 정보