cut 和 dd 在二进制文件上的不同结果
Different results with cut and dd on binary files
我的环境:
CentOS 6.5
我需要提取 ELF 文件的某些部分。
当我按如下方式使用dd
命令时,没有问题:
$dd if=a.out of=a.cut1 bs=1 skip=16
另一方面,当我按如下方式使用 cut
命令时,创建的文件比我预期的要小得多:
$cut --bytes=16- a.out > a.cut2
例如,我通过使用 gcc (v. 4.4.7) 编译以下示例 c 程序创建了 a.out:
#include <stdio.h>
int main()
{
printf("Hello world\n");
}
然后,我执行上面的dd
和cut
命令,我有以下大小的文件:
a.out - 6415 bytes
a.cut1 - 6399 bytes
a.cut2 - 6356 bytes
我想知道为什么 cut
命令减少的大小比我指定的多。
cut
将跳过每行 的前 16 个字节 而 dd
不关心行并仅跳过前 16 个字节整个文件。
如果文件包含换行符 - 这对二进制文件完全有效 - 那么 cut
将产生与 dd
不同的结果。
我的环境:
CentOS 6.5
我需要提取 ELF 文件的某些部分。
当我按如下方式使用dd
命令时,没有问题:
$dd if=a.out of=a.cut1 bs=1 skip=16
另一方面,当我按如下方式使用 cut
命令时,创建的文件比我预期的要小得多:
$cut --bytes=16- a.out > a.cut2
例如,我通过使用 gcc (v. 4.4.7) 编译以下示例 c 程序创建了 a.out:
#include <stdio.h>
int main()
{
printf("Hello world\n");
}
然后,我执行上面的dd
和cut
命令,我有以下大小的文件:
a.out - 6415 bytes
a.cut1 - 6399 bytes
a.cut2 - 6356 bytes
我想知道为什么 cut
命令减少的大小比我指定的多。
cut
将跳过每行 的前 16 个字节 而 dd
不关心行并仅跳过前 16 个字节整个文件。
如果文件包含换行符 - 这对二进制文件完全有效 - 那么 cut
将产生与 dd
不同的结果。