我知道如何创建一个空文件:
touch /var/tmp/nullbytes
但是如何使用 bash 在命令行上创建仅包含空字节的 1MB 文件?
答案1
使用 GNU truncate
:
truncate -s 1M nullbytes
(假设nullbytes
事先不存在)将创建一个 1 MB 的稀疏文件。该文件看起来充满了零,但不占用任何磁盘空间。
如果没有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
实际上会将零写入磁盘。这是效率最低的,但如果您需要驱动器在访问该文件时旋转,那么这就是您想要的。
或者 @mikeserv 的方法来欺骗dd
生成 NUL 字节:
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