如何自动在二进制文件中写入特定数量的零?
我写的:
#!/bin/bash
for i in {0..127};
do
echo -e -n "\x00" >> file.bin
done
Run Code Online (Sandbox Code Playgroud)
但是查看带有 Bless 输出的文件:2D 65 20 2D 6E 20 5C 78 30 30 0A
对应于-e -n \x00
.
printf
应该是可移植的并且支持八进制字符转义:
i=0
while [ "$i" -le 127 ]; do
printf '\000'
i=$((i+1))
done >> file.bin
Run Code Online (Sandbox Code Playgroud)
(printf
不需要像 那样支持十六进制转义\x00
,但许多 shell 支持这一点。)
请参阅为什么 printf 比 echo 更好?对于 的麻烦echo
。
如果文件为零,那么显而易见的是:
dd if=/dev/zero of=file.bin bs=1 count=128
Run Code Online (Sandbox Code Playgroud)
请注意,这是非常低效的,因为它执行单字节写入。您可以同样轻松地使用:
dd if=/dev/zero of=file.bin bs=128 count=1
Run Code Online (Sandbox Code Playgroud)
这里,bs' is the 'block size' and
count` 是多少块。写一个块比写很多小块要好!
请注意,上述命令不会附加到file.bin
,而是会覆盖它。一种方式是:
dd if=/dev/zero bs=128 count=1 >> file.bin
Run Code Online (Sandbox Code Playgroud)
说明:在没有 的情况下of=
,dd
写入标准输出,然后将其附加到输出文件。
归档时间: |
|
查看次数: |
12580 次 |
最近记录: |