linux下dd命令

转载地址:https://blog.csdn.net/linuxweiyh/article/details/51254047


在做嵌入式移植的时候,看到了这个命令,下面的内容也可以说是转载过来的。

dd命令作用:指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换,起到一个初始化磁盘的作用

我的理解:

第一句话:从一个文件中拷贝指定大小的内容到一个块

第二句话:在拷贝文件的时候可以对拷贝的内容进行转换;在拷贝内容的大小不满足块大小的时候,可以进行填充

第三句话:现在已经明白这个作用,就是格式化磁盘

下面是命令简介:

dd 的主要选项:

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 为
 alternate EBCDIC. 
block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充。

unblock 使每一行的长度都为 cbs ,不足部分用空格填充。
lcase 把大写字符转换为小写字符。
ucase 把小写字符转换为大写字符。
swab 交换输入的每对字节。
  
noerror 出错时不停止。

notrunc 不截短输出文件。 不取整指令
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。


我遇到的第一个命令:

busybox     dd     if=/dev/zero     of=/dev/mmcblk0     bs=512     seek=1     count=1     conv=sync

if=/dev/zero:输入文件名为/dev/zero

of=/dev/mmcblk0:输出文件名为/dev/mmcblk0

bs=512:读块和写块的大小都为512B(这里的输出文件为一个块设备,块大小的设置跟块设备中每块的大小相关)

seek=1:跳过第一个块

count:只拷贝一个块

conv:若读取的输入块不足512B,那么不足的部分填充NUL


我遇到的第二个命令:

sudo dd iflag=dsync oflag=dsync if=210.bin of=/dev/sdb seek=1

iflag=dsync:表示输入文件读取时不经过缓冲区,一块一块地读取(块的大小为缓冲区大小),直到读取完成。

oflag=dsync:表示输出文件不经过缓冲区,来一块,写入一块。

if=210.bin:表示输入文件为210.bin

of=/dev/sdb:表示输出文件为sd卡

seek=1:表示跳过第0块,从第1块开始写入

猜你喜欢

转载自blog.csdn.net/Wenlong_L/article/details/80769043