从给定的文件中,我需要创建一个用零填充到特定大小的副本。
如果您使用以下内容创建文件。
echo test >testfile
以下命令的输出不一致。
cat testfile /dev/zero | dd bs=256k count=1 status=none | od -c
这是我期望的输出。
0000000 t e s t \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000020 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
*
1000000
但你也随机得到以下任何一种。
0000000 t e s t \n
0000005
0000000 t e s t \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000020 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
*
0400000 \0 \0 \0 \0 \0
0400005
为什么这个命令有不一致的行为?
即使 dd 在第一个文件的末尾切断管道,128k 的结果也很奇怪。我在 16.04、18.04 和 19.04 系统下得到相同的不一致结果。