文章目录
dd
命令介绍
语法格式
基本参数
参考实例
1)生成一个200M的新文件
2)拷贝文件的100个字节
3)将文件的字母全部转换成大写
4)将linux自带的光盘制作成iso格式的镜像文件
5)使用dd命令制作1G的交换分区
6)将文件大写字母转换为小写字母
命令总结
dd
命令介绍
先看下帮助文档里的含义
NAME
dd - convert and copy a file
可以看出来dd(disk dump)的功能是用来转换和拷贝文件的,并且使用dd命令可以按照指定大小的数据块来拷贝文件,并在拷贝的过程中对内容进行转换。
语法格式
继续来看下命令帮助文档内的具体使用
语法:dd 【参数】【对象】
SYNOPSIS
dd [OPERAND]...
dd OPTION
基本参数
参数以表格显示
if=文件名 | 输入的文件名,默认为标准输入,即指定源文件 |
of=文件名 | 输出的文件名,默认为标准输出,即指定目标文件 |
bs=bytes | 同时设置读入/输出的“块”的大小为bytes个字节 |
ibs=bytes | 一次读入bytes个字节,即指定一个块的大小为bytes个字节 |
obs=bytes | 一次输出bytes个字节,即指定一个块的大小为bytes个字节 |
cbs=bytes | 一次转换bytes个字节,即指定转换缓冲区大小 |
count=blocks | 设置“块”的数量 |
skip=blocks | 从输入文件开头跳过blocks个块再开始复制 |
seek=blocks | 从输出文件开头跳过blocks个块后再开始复制 |
conv=<关键字> | 设置关键字信息来转换文件 |
conv的关键字有以下几种:
- conversion:用指定的参数转换文件。
- ascii:转换ebcdic为ascii
- ebcdic:转换ascii为ebcdic
- ibm:转换ascii为alternate ebcdic
- block:把每一行转换为长度为cbs,不足部分用空格填充
- unblock:使每一行的长度都为cbs,不足部分用空格填充
- lcase:把大写字符转换为小写字符
- ucase:把小写字符转换为大写字符
- swap:交换输入的每对字节
- noerror:出错时不停止
- notrunc:不截短输出文件
- sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
参考实例
1)生成一个200M的新文件
/dev/zero的文件可以产生无穷的数据,使用这个设备配合dd使用,就能创建一个指定大小的文件。
[root@localhost ~]# dd if=/dev/zero of=1.txt bs=10M count=20
记录了20+0 的读入
记录了20+0 的写出
209715200字节(210 MB)已复制,3.69047 秒,56.8 MB/秒
[root@localhost ~]# ll -h 1.txt
-rw-r--r--. 1 root root 200M 2月 26 11:16 1.txt
2)拷贝文件的100个字节
可以用来拷贝源文件的数据到目标文件中, 设置要拷贝的大小为100字节,数量为1个。
[root@localhost ~]# dd if=/etc/passwd of=passwd.txt count=1 bs=100
记录了1+0 的读入
记录了1+0 的写出
100字节(100 B)已复制,0.000323161 秒,309 kB/秒
[root@localhost ~]# cat passwd.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
3)将文件的字母全部转换成大写
将源文件转换成目标文件,使用关键字“ucase”,意将小写的字符转换成大写的。
[root@localhost ~]# dd if=/etc/passwd of=passwd1.txt conv=ucase
记录了4+1 的读入
记录了4+1 的写出
2290字节(2.3 kB)已复制,0.00014741 秒,15.5 MB/秒
[root@localhost ~]# cat passwd1.txt | head
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN
DAEMON:X:2:2:DAEMON:/SBIN:/SBIN/NOLOGIN
ADM:X:3:4:ADM:/VAR/ADM:/SBIN/NOLOGIN
4)将linux自带的光盘制作成iso格式的镜像文件
centos7.iso文件系统格式为iso 9660,表示此文件为镜像文件
[root@localhost ~]# dd if=/dev/cdrom of=centos7.iso
记录了9203712+0 的读入
记录了9203712+0 的写出
4712300544字节(4.7 GB)已复制,228.538 秒,20.6 MB/秒
[root@localhost ~]# file centos7.iso
centos7.iso: # ISO 9660 CD-ROM filesystem data 'CentOS 7 x86_64' (bootable)
5)使用dd命令制作1G的交换分区
制作交换分区,先拷贝一个1G的文件出来 ,再使用mkswap命令进行强制格式化后,设置文件权限为600后就可以进行激活挂载了。
[root@localhost ~]# dd if=/dev/zero of=a.txt bs=1M count=1000 #拷贝1G的文件
记录了1000+0 的读入
记录了1000+0 的写出
1048576000字节(1.0 GB)已复制,25.3194 秒,41.4 MB/秒
[root@localhost ~]# mkswap -f a.txt #使用-f强制格式化文件
正在设置交换空间版本 1,大小 = 1023996 KiB
无标签,UUID=15c1a284-e382-40c7-9787-4b52d4d52652
#需要设置文件权限为600才能挂载,否则会显示不安全的权限
[root@localhost ~]# chmod 600 a.txt
[root@localhost ~]# swapoff -a #关闭所有交互分区
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 3.8G 883M 105M 27M 2.9G 2.7G
Swap: 0B 0B 0B
[root@localhost ~]# swapon a.txt #激活此文件
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 3.8G 883M 142M 27M 2.8G 2.7G
Swap: 999M 0B 999M
#将设置好的交换分区写入到/etc/fstab文件,使其能开机自启
[root@localhost ~]# echo "/root/a.txt swap swap defaults 0 0" >> /etc/fstab
6)将文件大写字母转换为小写字母
刚可以将小写字母转换成大写字母,也可将大写字母转换成小写字母。
[root@localhost ~]# dd if=passwd1.txt of=passwd2.txt conv=lcase
记录了4+1 的读入
记录了4+1 的写出
2290字节(2.3 kB)已复制,0.00987157 秒,232 kB/秒
[root@localhost ~]# cat passwd2.txt | head -2
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
命令总结
这个命令正常使用还是挺有意思的,参数上看着是比较多的内容,实际有几个是比较常能用来搭配使用的,若觉得以上内容还行的,可以点赞支持一下!