有关这个命令的具体参数和解释,大家可以man。
这篇博文的目的dd命令的简单使用,主要是从实际例子进行出发的。
首先,dd命令是转换和复制一个文件。
这个命令和cp有什么区别呢?
(1)dd是对块进行操作的,cp是对文件进行操作的。
(2)cp若干个文件之后,还是若干个文件,dd之后,相当于汇总成了一个 文件了。
具体的区别可以参考:
《dd与cp的区别》
我们这里一起来看几个比较重要的参数吧:
输入/输出
dd if=input_file of=output_file
强迫一次只做多少个字节
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