2015-04-01 116 views
1

我的环境:不同的结果与剪裁和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以下样品C程序创建的a.out(v 4.4.7):

#include <stdio.h> 

int main() 
{ 
    printf("Hello world\n"); 
} 

然后,我执行ddcut命令如上述,我有文件与以下大小:

a.out - 6415 bytes 
a.cut1 - 6399 bytes 
a.cut2 - 6356 bytes 

不知为什么cut命令降低比我所指定的大小以上。

回答

5

cut将从每个条跳跃前16个字节dd不关心线,并跳过刚刚从整个文件中的前16个字节。

如果文件包含换行符 - 这对二进制文件非常有效 - 那么cut将产生与dd不同的结果。

+0

我感谢您的回复。现在我可以清楚地理解原因。 – sevenOfNine 2015-04-01 07:55:30