2015-04-01 46 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