您的位置:首页 > 运维架构 > Linux

linux命令之dd命令详解和/dev/zero、/dev/null

2016-01-11 19:21 686 查看
主要内容来自:http://www.cnblogs.com/dkblog/archive/2009/09/18/1980715.html

dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换(convert
and copy a file )。

用途: SD卡读写速度测试、 创建指定大小的空文件。实例放在最后。

用法:

可以通过命令 dd --help 或 info dd 来查看使用方法

输入或输出

dd if=[STDIN] of=[STDOUT]

强迫输入或输出的Size为多少Bytes

bs: dd -ibs=[BYTE] -obs=[SIZE]

强迫一次只做多少个 Bytes

cbs=BYTES

跳过一段以后才输出

seek=BLOCKS

跳过一段以后才输入

skip=BLOCKS

当然你可以拿这个来方便的拷贝成光碟(注意,你的光碟是标准的 iso9660格式才可以这么做唷!)

dd if=/dev/cdrom of=cdrom.iso

其中 if 后面以及 of 后面的内容依你的需求调整。

语法:dd
[选项]

if =输入文件(或设备名称)。

of =输出文件(或设备名称)。

ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。

skip = blocks 跳过读入缓冲区开头的ibs*blocks块。

obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。

bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。

cbs = byte 一次转换bytes字节。

count=blocks 只拷贝输入的blocks块。

conv = ASCII 把EBCDIC码转换为ASCIl码。

conv = ebcdic 把ASCIl码转换为EBCDIC码。

conv = ibm 把ASCIl码转换为alternate EBCDIC码。

conv = block 把变动位转换成固定字符。

conv = ublock 把固定位转换成变动位。

conv = ucase 把字母由小写转换为大写。

conv = lcase 把字母由大写转换为小写。

conv = notrunc 不截短输出文件。

conv = swab 交换每一对输入字节。

conv = noerror 出错时不停止处理。

conv = sync 把每个输入记录的大小都调到ibs的大小(用NUL填充)。

实例1: SD卡读写测试

dd if=/dev/zero of=/sdcard/testfile bs=64k count=1024 以每块64K大小,写入1024块到SD卡中

dd if=/sdcard/testfile of=/sdcard/testfile11 bs=64k count=1024

dd if=/dev/zero of=/sdcard/testfile bs=8196 count=8196

dd if=/sdcard/testfile of=/sdcard/testfile11 bs=8196 count=8196

实例2:生成指定大小的空文件

创建一个100M的空文件

dd if=/dev/zero of=hello.txt bs=100M count=1

=============================================

/dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着!

/dev/zero,是一个输入设备,你可你用它来初始化文件。

/dev/null------它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。

/dev/zero------该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。

$ dd if=/dev/zero of=./test.txt bs=1k count=1

$ ls -l

total 4

-rw-r--r-- 1 oracle dba 1024 Jul 15 16:56 test.txt

eg:

$ find / -name access_log 2>/dev/null
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: