dd是Linux/UNIX下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
dd的主要选项:
指定数字的地方若以下列字符结尾乘以相应的数字:
b=512,c=1,k=1024,w=2,xm=numberm
if=file
输入文件名,缺省为标准输入。
of=file
输出文件名,缺省为标准输出。
ibs=bytes
一次读入bytes个字节(即一个块大小为bytes个字节)。
obs=bytes
一次写bytes个字节(即一个块大小为bytes个字节)。
bs=bytes
同时设置读写块的大小为bytes,可代替ibs和obs。
cbs=bytes
一次转换bytes个字节,即转换缓冲区大小。
skip=blocks
从输入文件开头跳过blocks个块后再开始复制。
seek=blocks
从输出文件开头跳过blocks个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)
count=blocks
仅拷贝blocks个块,块大小等于ibs指定的字节数。
conv=conversion[,conversion...]
用指定的参数转换文件。
转换参数:
ascii转换EBCDIC为ASCII。
ebcdic转换ASCII为EBCDIC。
ibm转换ASCII为 alternateEBCDIC.
block把每一行转换为长度为cbs的记录,不足部分用空格填充。
unblock
使每一行的长度都为cbs,不足部分用空格填充。
lcase把大写字符转换为小写字符。
ucase把小写字符转换为大写字符。
swab交换输入的每对字节。Unlikethe
Unixdd,thisworkswhenanoddnumberof
bytesareread.Iftheinputfilecontains
anoddnumberofbytes,thelastbyteis
simplycopied(sincethereisnothingto
swapitwith).
noerror
出错时不停止。
notrunc
不截短输出文件。
sync把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
由于dd命令允许二进制方式读写,所以特别适合在原始物理设备上进行输入/输出。例如可以用下面的命令为软盘建立镜像文件:
ddif=/dev/fd0of=disk.imgbs=1440k
有趣的是,这个镜像文件能被HD-Copy,Winimage等工具软件读出。再如把第一个硬盘的前512个字节存为一个文件:
ddif=/dev/hdaof=disk.mbrbs=512count=1