/dev/zero

는 읽기를 위해 가능한 많은 널 문자(ASCII NUL, 0x00)를 제공하는 유닉스 계열 운영 체제의 특수 파일이다. 일반적인 용도 중 하나는 데이터 스토리지를 초기화하기 위해 문자 스트림을 제공하는 것이다.

기능 
의 읽기 동작은 읽기에 요청할만큼의 널 문자(0x00)을 반환한다.

과 달리, 는 데이터의 싱크(sink)로서가 아닌 소스(source)로서 사용할 수 있다. 로의 모든 쓰기 동작은 아무 영향 없이 성공한다. 그러나 이 목적의 경우 을 사용하는 것이 더 일반적이다.

가 메모리에 매핑될 때(예: 가상 주소 공간에 대해 mmap) 익명 메모리를 사용하는 것과 동일한 효과가 있다.(예: 메모리가 파일에 연결되지 않음)

역사 
/dev/zero는 1988년 익명 메모리를 사용하여 공유 라이브러리를 위해 매핑 가능한 BSS 세그먼트를 허용할 목적으로 SunOS-4.0에 도입되었다. 1990년대 중반, HP-UX는 /dev/zero를 개방하지 않고 익명 메모리를 직접 매핑하는 mmap() 플래그 MAP_ANONYMOUS를 도입하였다. 1990년대 말 이후로 기존 /dev/zero 목적을 대신하는 MAP_ANONYMOUS는 대부분의 유닉스 버전에 지원된다.

예 
dd 유닉스 유틸리티 프로그램은 출발지에서 도착지까지 옥텟 스트림을 읽으며 이 과정에서 데이터 변환을 수행할 수 있다. 파일 시스템 파티션에서 기존 데이터를 파괴하려면(로우 레벨 포맷)

 dd if=/dev/zero of=/dev/<destination partition>

널 문자로 채워진, foobar라는 이름의 1 MiB 파일을 생성하려면:
dd if=/dev/zero of=foobar count=1024 bs=1024

참고: 블록 크기 값은 SI(십진)값으로 줄 수 있다.(예: GB, MB 등) 1 GB 파일을 생성하기 위해 다음과 같이 입력한다:
dd if=/dev/zero of=foobar count=1 bs=1GB

참고: 0바이트로만 채워진 읽기 파일을 만드는 대신 수많은 파일 시스템들은 또한 희소 파일의 생성도 지원하며, 이는 실제 공간을 덜 사용하면서 읽기 시 0을 반환한다.

같이 보기 
 유닉스 철학
 표준 스트림

각주 

유닉스 파일 시스템 기술
장치 파일