빈 파일을 만드는 방법을 알고 있습니다.
touch /var/tmp/nullbytes
하지만 bash를 사용하여 명령줄에서 null 바이트만 포함하는 1MB 파일을 어떻게 만들 수 있습니까?
답변1
GNU 사용 truncate
:
truncate -s 1M nullbytes
( nullbytes
미리 존재하지 않는다고 가정) 1MB의 스파스 파일이 생성됩니다. 파일은 0으로 가득 차 보이지만 디스크 공간을 차지하지 않습니다.
그렇지 않은 경우 truncate
다음을 사용할 수 있습니다 dd
.
dd bs=1048576 seek=1 of=nullbytes count=0
(일부 dd
구현에서는 1048576을 로 바꿀 수 있습니다 1M
)
디스크 공간을 원할 경우할당된, Linux 및 일부 파일 시스템에서는 다음을 수행할 수 있습니다.
fallocate -l 1M nullbytes
이는 실제로 데이터를 디스크에 쓰지 않고 공간을 할당합니다(공간은 예약되어 있지만 초기화되지 않은 것으로 표시됨).
dd < /dev/zero bs=1048576 count=1 > nullbytes
0은 실제로 디스크에 기록됩니다. 이는 효율성이 가장 낮지만 파일에 액세스하는 동안 드라이브를 회전시켜야 하는 경우 이것이 원하는 것입니다.
dd
또는 NUL 바이트 생성을 속이는 @mikeserv의 방법 :
dd bs=1048576 count=1 conv=sync,noerror 0> /dev/null > nullbytes
GNU 대안에서는 head
블록 크기를 지정할 필요가 없습니다(1M은 괜찮지만 10G는 그렇지 않습니다):
head -c 1M < /dev/zero > nullbytes
또는 진행률 표시줄을 가져옵니다.
pv -Ss 1M < /dev/zero > nullbytes
답변2
dd if=/dev/zero of=/var/tmp/nullbytes count=1 bs=1M