dd命令能够转换和拷贝文件。能方便地实现对文件较底层的操作的操作。
命令行选项
bs=BYTES
:制定每次读写操作块的单位,默认512字节。会覆盖ibs和obs的值。
ibs=BYTES
,obs=BYTES
:ibs指定读操作单位,obs指定写操作单位
count=N
:进行操作的块的数量,不指定会读完整个文件。
if=FILE
:从指定文件读入,默认stdin
of=FILE
:从指定文件写入,默认stdout
部分特殊的路径:
/dev/zero:无限0源,从该文件可以读入任意数量的0。在windows版本的dd中,/dev/zero作为dd的一部分被实现。
/dev/null:黑洞,能接收任意数量的数据。在windows中,任意目录下的nul
文件有类似的功能。
conv=CONVS
:设置转换选项。多个选项使用逗号分隔开。
nocreat:不要创建输出文件
notrunc:不要截断输出文件
noerror:忽略错误并继续
iflag=FLAGS
:输入标志设置。多个选项使用逗号分隔开。
oflag=FLAGS
:输出标志设置。多个选项使用逗号分隔开。
append:添加到文件末尾。与notrunc连用防止之前的数据被清零。
seek=N
:跳过从输出文件开头算起,N块obs大小的数据。
skip=N
:跳过从输入文件开头算起,N块ibs大小的数据。
输出信息
一般完成后可以看到x+y records in
(x,y显示为常数)。表示读(写)操作完整执行了x个block,还有y个block没达到bs大小。
一些应用
1). 复制文件
dd if=src of=dest
这里src大小不需要是bs的整数倍也能够正确的复制。
2). 显示文件大小
dd if=src of=/dev/null
3). 创建文件
dd bs=BYTES count=N if=/dev/zero of=dest
4). 在末尾添加字节
dd bs=BYTES count=N conv=notrunc oflags=append if=/dev/zero of=dest
5). 让一个文件覆盖另一文件中的某个部分
dd bs=BYTES count=N conv=notrunc seek=X of=src if=dest
'''
其中,`X` 为期望插入的位置(以块计)。