我的环境:
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
命令会减小比我指定的大小。
答案 0 :(得分:5)
cut
将跳过每行的前16个字节 ,而dd
不关心行,只跳过整个文件的前16个字节。
如果文件包含换行符 - 这对二进制文件完全有效 - 那么cut
将产生与dd
不同的结果。