shell脚本中使用的几个基本命令

diff

diff命令,针对文件内容,与文件名无关,用来比较两个文件或目录之间的不同
生成两个有一点区别的文件,比如我们生成一个比文件1多一行的文件2,然后用diff命令来比较以下两个文件:
在这里插入图片描述
可以看到,文件2比文件1多一行,然后我们使用diff命令来比较两个文件
在这里插入图片描述

a表示添加(add)
c表示改变(change)
d表示删除(delete)
字母左边的数字表示第一个文件的行,右边的数字表示第二个文件的行
"<"表示diff后面所跟第一个文件中的内容,">"表示第二个文件中的内容。

上面的输出结果意思为:在第一个五行的文件file1后添加所显示的第二个文件file2中的内容,就可以和第二个六行的文件匹配

我们将diff后面的文件交换以下位置,看看结果有什么不同:
在这里插入图片描述
可以看到,输出结果中的字母变成了d,表示删除,意思为删除第一个6行文件file2中的所显示内容,就可以和第二个文件file1的5行匹配

我们再出重新生成两个文件,两个文件中的其中一行或多行不相同:
在这里插入图片描述
我们可以看到这次的字母变成了c,意思为改变的第一个四行文件test1中的4改变为第二个文件test2中的5,就可以和第二个文件的四行匹配
diff还有很多参数:

-u:表示在比较结果中输出上下文中一些相同的行,有利于人工定位
-r:表示递归的比较各个子目录下的文件
-w:忽略空格
-B:忽略空行

在这里插入图片描述
输出的结果意思为,不带+的三行为两个文件中相同的行,带+的为第二个文件比第一个文件多的一行

patch

patch命令,用于不同文件之间打补丁,将文件与目标文件内容匹配
主要用到的参数为 -b:保留一份源文件,会生成file.orig文件,此文件内容为未打补丁之前的文件内容
要使用patch命令,我们需要用yum安装,yum install patch -y
在使用patch命令打补丁之前,我们需要生成file.path文件,这个文件中就是"补丁",我们需要将这个文件中的内容打到我们需要打补丁的文件中
diff -u file1 file2 > file.path
在这里插入图片描述
可以看到file2比file1多一行,现在我们来使用patch命令来给file1打补丁,在这里我们使用-b参数保留一份源文件
在这里插入图片描述
可以看到,打过补丁的file1比之前多了一行,和file2文件内容一样了

cut

cut命令多用于字符截取,截取文件中特定位置的字符

cut	-d					指定分隔符
cut	-f	1,7|1-7		指定截取的列
cut	-c	1,4|1-4		指定截取的字符位置

cut -d : -f 1 /etc/passwd
截取/etc/passwd文件中的内容,指定分隔符为:指定截取第一列
在这里插入图片描述
cut -c 1-5 /etc/passwd
指定截取每一行的1-5个字符
在这里插入图片描述

sort

sort命令多用于字符排序

sort		
			-n			纯数字排序
			-r			倒序排序,以每行第一个数字进行排序
			-u			去掉重复的数字
			-o			输出到指定文件中
			-t			指定分隔符
			-k			指定要排序的列

我们生成一个内容为若干行数字的文件:
在这里插入图片描述
接下来我们使用sort来对这个文件中的内容进行排序
sort -n sortfile 在这里插入图片描述
sort -r sortfile 以第一个数字,也就是最高位进行排序
在这里插入图片描述
sort -u sortfile
在这里插入图片描述
sort -r sortfile -o sortfile1
在这里插入图片描述
我们重新生成一个内容如下的文件:
在这里插入图片描述
sort -t : -k 2 sortfile2 以冒号为分隔符,按第二列数字排序,以第二列数字的最高位大小排序
在这里插入图片描述

test

test命令用于检查文件类型和比较值,与[ ]等同

扫描二维码关注公众号,回复: 5133068 查看本文章
test A -a B		两个表达式都为真	and
test A -o B		两个表达式有一个为真  or
字符串:
test  	-n		字符串		字符串的长度非零
test	-z		字符串		字符串的长度为零
整数:
test	A	
			-eq	B				两数相等
			-ge	B				A>=B
			-gt	B				A>B
			-le	B				A<=B
			-lt	B				A<B
			-ne	B				A!=B
文件:
test	F1
			-ef	F2	两个文件具有同样的设备号和结点号
			-nt	F2	F1比F2文件新
			-ot	F2	F1比F2文件旧
检查文件类型:
test	
		-b			文件存在且为块设备文件
		-c			文件存在且为字符设备文件
		-d			目录
		-e			文件存在
		-f			正规文件(普通文件)
		-L/-h		是否为一个软链接
		-S			是否为一个套接字	

在这里插入图片描述

&& 和 ||

&&用来执行条件成立后执行的命令
||用来执行条件不成立后执行的命令
举例:
ping -c1 -w1 172.25.66.11 > /dev/null && echo up || echo down
ping -c1 -w1 172.25.66.12 > /dev/null && echo up || echo down
检测172.25.66.11和172.25.66.12主机是否连通,将检测信息回收不显示,通则显示up ,否则显示down
在这里插入图片描述

uniq

uniq命令用于报告或者忽略文件中重复的行,一般与sort命令结合使用

uniq	
			-c/--count			在每列旁边显示该行重复出现的次数
			-d/--repeated	仅显示重复出现的行
			-u/--unique		仅显示出现一次的行列

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/gd0306/article/details/86264339
今日推荐