rub*_*o77 29 command-line files
我知道如何创建一个空文件:
touch /var/tmp/nullbytes
Run Code Online (Sandbox Code Playgroud)
但是如何使用 bash 在命令行上创建一个仅包含空字节的 1MB 文件?
Sté*_*las 63
使用 GNU truncate:
truncate -s 1M nullbytes
Run Code Online (Sandbox Code Playgroud)
(假设nullbytes事先不存在)将创建一个 1 MB 的稀疏文件。这是一个看起来充满零但不占用磁盘空间的文件。
没有truncate,您可以使用dd:
dd bs=1048576 seek=1 of=nullbytes count=0
Run Code Online (Sandbox Code Playgroud)
(在某些dd实现中,您可以将 1048576 替换为1M)
如果您希望分配磁盘空间,在 Linux 和某些文件系统上,您可以执行以下操作:
fallocate -l 1M nullbytes
Run Code Online (Sandbox Code Playgroud)
这会分配空间而不实际将数据写入磁盘(空间被保留但标记为未初始化)。
dd < /dev/zero bs=1048576 count=1 > nullbytes
Run Code Online (Sandbox Code Playgroud)
实际上会将零写入磁盘。这是效率最低的,但如果您在访问该文件时需要驱动器旋转,那么您将想要使用它。
或者@mikeserv 欺骗dd生成 NUL 字节的方法:
dd bs=1048576 count=1 conv=sync,noerror 0> /dev/null > nullbytes
Run Code Online (Sandbox Code Playgroud)
GNU 的另一种选择head,不需要指定块大小(1M 是可以的,但 10G 则不会):
head -c 1M < /dev/zero > nullbytes
Run Code Online (Sandbox Code Playgroud)
或者获取进度条:
pv -Ss 1M < /dev/zero > nullbytes
Run Code Online (Sandbox Code Playgroud)
Zel*_*lda 28
dd if=/dev/zero of=/var/tmp/nullbytes count=1 bs=1M
Run Code Online (Sandbox Code Playgroud)