bash 스크립트에서 /dev/null로 출력하면 무엇을 수행할 수 있나요?

bash 스크립트에서 /dev/null로 출력하면 무엇을 수행할 수 있나요?

종종 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

관련 정보