我需要创建一个仅填充11111111
.
我只知道如何创建零填充的二进制文件
dd if=/dev/zero bs=18520 count=1
您能告诉我应该使用管道中的什么命令来填充垃圾箱吗1
?awk
在这种情况下我该如何使用?
答案1
可能最容易使用tr
将零转换为/dev/zero
您想要的任何值,然后使用dd
或head
等剪切长度。
这将写入 18520 个字节,所有位均为 1,因此值为 0xff 或 255,或八进制的 377,因为输入必须是:
< /dev/zero tr '\000' '\377' | head -c 18520 > test.bin
(要从十六进制或十进制转换为八进制,您可以使用printf "%o\n" 0xff
等。)
要生成长于一字节字符串的流,我将使用 Perl:
perl -e '$a = "abcde" x 1024; print $a while 1' | head ...
(当然,您也可以在那里使用"\xff"
or "\377"
。我在那里使用重复运算符x 1024
主要是为了避免最小限度的小写入。更改它可能会也可能不会影响其性能。)
答案2
不要使用dd bs=…
:它不可靠。要么使用ibs=1 obs=1
或使用不易出错的工具。大多数head
实现都可以计算字节数:
</dev/zero head -c 18520
如果您希望文件填充零以外的单个字节,请使用 更改字节值tr
。对于全位为一:
</dev/zero head -c 18520 | tr '\0' '\377'
答案3
具体回答你的问题,使用 dd 与管道中的 tr 配合使用效果很好
dd if=/dev/zero bs=18520 count=1 | tr '\000' '1' > test.bin
但是,您应该澄清这一点的范围,以便为您提供更相关的答案