
종종 if 문에서 이런 종류의 구문을 사용하는 작은 bash 스크립트를 실행합니다.
some command > /dev/null 2>&1
이렇게 출력하는 목적은 무엇이며 /dev/null
, 그 2>&1
의미는 무엇입니까?
항상 작동하는 것 같지만 그것이 무엇을 하고 있는지 알고 싶습니다.
답변1
>/dev/null
명령 표준 출력을 기록된 정보를 삭제하는 특수 장치인 널 장치로 리디렉션합니다.
2>&1
표준 오류 스트림을 표준 출력 스트림(stderr = 2, stdout = 1)으로 리디렉션합니다. 이는 표준 오류 스트림을 가져와 해당 순간의 표준 출력과 동일한 위치를 가리킨다는 점에 유의하세요. 이것이 >/some/where 2>&1
먼저 stdout을 어딘가로 지정해야 하고그 다음에결국 두 스트림을 모두 결합하려면 stderr를 동일한 위치로 지정하십시오.
실제로 이는 명령(stdout 및 stderr 모두)의 출력이 표시되지 않도록 합니다. 명령 출력에 신경 쓰지 않을 때 사용됩니다.
답변2
STDIN은 0, STDOUT은 1, STDERR은 2로 표시됩니다.
/dev/null비트 버킷은 필요하지 않은 것을 버리는 곳입니다.
따라서 STDOUT은 비트 버킷(휴지통)으로 리디렉션되고 STDERR은 STDOUT이 있는 비트 버킷으로 리디렉션됩니다.
다음과 같이 할 수도 있습니다.
>/dev/null 2>/dev/null