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命令用于检查文件类型和比较值,与[ ]等同
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 仅显示出现一次的行列