使用 obs 和 seek 执行 dd 会导致文件大小意外

使用 obs 和 seek 执行 dd 会导致文件大小意外

我正在通过实验性地使用它的参数来学习使用dd。我想创建一个 10 字节的文件。我认为以下方法可行:

dd if=/dev/zero of=./foo count=1 bs=1 obs=9 seek=1

...因为手册页中有这些评论:

   obs=BYTES
          write BYTES bytes at a time (default: 512)
   seek=N skip N obs-sized blocks at start of output

...但事实并非如此;它创建了一个 2 字节文件:

>ls -l foo
-rw-rw-r-- 1 user user 2 Mar 28 16:05 foo

我的解决方法是:

dd if=/dev/zero of=./foo count=1 bs=1 obs=1 seek=9

但就我的学习而言,我想了解为什么第一个版本不起作用。谢谢。

答案1

同时使用bs= 1obs=9会产生冲突,因为 bs 参数指定了输入和输出块大小。
显然bs=覆盖了obs=规范。

尝试使用更具体的ibs=1而不是bs=1

相关内容