Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1869463
  • 博文数量: 217
  • 博客积分: 4362
  • 博客等级: 上校
  • 技术积分: 4180
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-20 09:31
文章分类

全部博文(217)

文章存档

2017年(1)

2015年(2)

2014年(2)

2013年(6)

2012年(42)

2011年(119)

2010年(28)

2009年(17)

分类: Python/Ruby

2011-09-15 15:56:37

有关这个命令的具体参数和解释,大家可以man。
这篇博文的目的dd命令的简单使用,主要是从实际例子进行出发的。
首先,dd命令是转换和复制一个文件。
这个命令和cp有什么区别呢?
(1)dd是对块进行操作的,cp是对文件进行操作的。
(2)cp若干个文件之后,还是若干个文件,dd之后,相当于汇总成了一个 文件了。
具体的区别可以参考:
我们这里一起来看几个比较重要的参数吧:

输入/输出
dd if=input_file of=output_file

强迫一次只做多少个字节
cbs=my_size

跳过几个段之后才输入
seek=my_size

一次读入bytes字节(也就是一个块的大小)
ibs=byes

一次写bytes字节(也就是一个块的大小)
obs=bytes

同时设置ibs和obs
bs=bytes

从输入文件开头跳过bloks块开始复制
skip=bloks

从输出文件开头跳过bloks块开始复制(通常只有输出文件是磁盘或者磁带时有效)
seek=bloks


仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。 
count=blocks 

用指定的参数转换文件。 
conv=conversion[,conversion...] 
转换参数: 
ascii 转换 EBCDIC 为 ASCII。 
ebcdic 转换 ASCII 为 EBCDIC。 
ibm 转换 ASCII 为 alternate EBCDIC. 
block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充。 
unblock 使每一行的长度都为 cbs ,不足部分用空格填充。 
lcase 把大写字符转换为小写字符。 
ucase 把小写字符转换为大写字符。 
swab 交换输入的每对字节。  
noerror 出错时不停止。 
notrunc 不截短输出文件。 
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

(1)有这样一个问题:现在需要一个大的文件进行测试,想将一个文件复制上N遍来生成这个文件。
我们使用dd命令和/dev/zero字符设备文件来实现,
dd if=/dev/zero of=out_file
具体的实现可以参考我的博客:

(2)有一个二进制文件file1,size>2K,现在想从第64个字节处开始读取,需要读取128Bytes,另外又有文件file2,想把刚才读取的结果放到从file2开始第32个字节的开始位置,替换128Bytes,这个应该如何实现呢?
dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc


阅读(1434) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~