如何在 bash 中制作具有特定十六进制模式的文件
How to make files with specific hex pattern in bash
我正在尝试在 bash
中制作许多具有特定 4 字节十六进制模式的文件 (4KB~10MB)
例如,
0000000: 1234 5678 1234 5678 1234 5678 1234 5678 ....
所以我使用 'dd' 制作了零模式数据并将其转换为特定的 4 字节十六进制模式,如下所示
dd if=/dev/zero bs=1k 计数=10 | tr "\000" $'\x12345678' > File.bin
但它 returns 只是给定十六进制模式的前 1 个字节。
0000000 : 1212 1212 1212 1212 1212 1212 1212 1212 ....
我应该修复哪一点?
在小端
printf '\x34\x12\x78\x56%.0s' {1..10} > File.bin
你可以使用 perl
$ dd if=/dev/zero bs=1k count=10 | perl -0777 -pe "s/\x00{4}/\x12\x34\x56\x78/g" > file.bin
$ xxd file.bin
0000000: 1234 5678 1234 5678 1234 5678 1234 5678 .4Vx.4Vx.4Vx.4Vx
0000010: 1234 5678 1234 5678 1234 5678 1234 5678 .4Vx.4Vx.4Vx.4Vx
...
我正在尝试在 bash
中制作许多具有特定 4 字节十六进制模式的文件 (4KB~10MB)例如,
0000000: 1234 5678 1234 5678 1234 5678 1234 5678 ....
所以我使用 'dd' 制作了零模式数据并将其转换为特定的 4 字节十六进制模式,如下所示
dd if=/dev/zero bs=1k 计数=10 | tr "\000" $'\x12345678' > File.bin
但它 returns 只是给定十六进制模式的前 1 个字节。
0000000 : 1212 1212 1212 1212 1212 1212 1212 1212 ....
我应该修复哪一点?
在小端
printf '\x34\x12\x78\x56%.0s' {1..10} > File.bin
你可以使用 perl
$ dd if=/dev/zero bs=1k count=10 | perl -0777 -pe "s/\x00{4}/\x12\x34\x56\x78/g" > file.bin
$ xxd file.bin
0000000: 1234 5678 1234 5678 1234 5678 1234 5678 .4Vx.4Vx.4Vx.4Vx
0000010: 1234 5678 1234 5678 1234 5678 1234 5678 .4Vx.4Vx.4Vx.4Vx
...