1. diff
- 用法:
diff [options] files | directorys - 输出信息:
[num1,um2] [a|c|d] [num3,num4]
字符 | 含义 |
---|---|
num1,num2 | 第一个文件中的行 |
a | 添加 |
c | 更改 |
d | 删除 |
< | 第一个文件中的内容 |
> | 第二个文件中的内容 |
num3,num4 | 第二个文件中的行 |
输入命令 : diff file1 file 既可以看到他们之间的不同,表示删除第一个文件中第二行的 zxk 便可和第二个文件一样;
输入命令 : diff file file1 看到的信息,表示第一个文件添加第二个文件中的第二行 zxk 即可和第二个文件一致;
如下图中的 1c1 表示,第一个文件做添加即可和第二个文件内容一致;
常用参数:
参数 | 含义 |
---|---|
-b | 忽略空格 |
-B | 忽略空行 |
-i | 忽略大小写 |
-c | 显示文件所有内容并标示不同 |
-r | 对比目录 |
-u | 合并输出 |
如 file 和 file1相比,file1 比 file 多一空行,输入 diff -B file file1,便可以忽略空行对比信息;
如 file 和 file1相比,file1 比 file 多几个空格,输入命令 diff -b file file1,便可以忽略空格对比信息;
输入命令 diff -i file file1 即可忽略大小写来做对比;
输入命令 diff -c file file1 即可显示所有的信息,并在不想的行前面标出 ! ;
输入命令 diff zxk westos,不加 -r ,只能对比一层目录的内容是否一致;
如输入命令 diff -r zxk westos,即可将深层目录中的不同也对比出来;
输入命令 diff -u file file1 即可合并信息,并且可以将合并的信息输出成补丁文件。
2. patch
-
用法: patch + 原文件 + 补丁文件
-
-b 备份原文件
系统中默认是没有安装 patch 软件的,需要手动安装,输入命令 dnf install path -y,来安装该软件。
生成补丁文件之后,即可对其打补丁;
输入命令 patch file westos.path 即可用补丁文件来为 file 文件补全信息;但是之前的文件会被替代;
输入命令 patch -b file westos.path,即可用补丁文件来为 file 文件补全信息;同时也会生成一个 .orig 的文件,此文件为 file 文件补丁之前生成的副本。
3. cut
cut
参数 | 含义 |
---|---|
-d : | 指定 : 为分割符 |
-f | 指定显示的列 ,5表示第五列;3,5 表示3和5列;3-5 表示 3到5列 |
-c | 指定截取的字符(数字用法同-f) |
如输入命令 cut -d : -f 1 zxk ,表示用 : 来分割,显示第一列信息;
输入命令 cut -d / -f 1 zxk ,表示用 / 来分割,显示第一列信息;
输入命令 cut -d : -f 1,3 zxk ,表示用:分割,显示第1和第3列信息;
输入命令 cut -d : -f 1-3 zxk ,表示用:分割,显示第1至第3列信息;
输入命令 cut -d : -f 4- zxk ,表示用:分割,显示第4至最后的信息;
输入命令 cut -d : -f -5 zxk ,表示用:分割,显示第5列之前的信息;
输入命令 cut -c 1-5 zxk ,表示截取 1-5 个字符信息;
输入命令 cut -c -6 zxk ,表示截取第6个字符包括第6个字符之前的信息。
4. sort
参数 | 含义 |
---|---|
-n | 纯数字排序 |
-r | 倒叙 |
-u | 去掉重复 |
-o | 输出到指定文件 |
-t | 指定分割符 |
-k | 指定排序的列 |
输入命令 sort -n zxk ,对文件内容按照纯数字排序;
输入命令 sort zxk ,对文件内容进行排序,默认排序是按照第一个数字大小进行排序;
输入命令 sort -rn zxk ,按照纯数字倒叙对内容进行排序;
输入命令 sort -run zxk ,去掉重复按照纯数字倒叙对内容进行排序;
输入命令 sort -n -t : -k 2 zxk,用分割符:对内容进行分割,对第2列按照纯数字进行排序;
5. uniq
参数 | 含义 |
---|---|
-c | 合并重复并统计重复个数 |
-d | 显示重复的行 |
-u | 显示唯一的行 |
输入命令 sort -n zxk | uniq -c 按照纯数字对内容进行排序,合并重复并统计重复个数;
输入命令 sort -n zxk | uniq -d ,按照纯数字排序,并显示重复的行;
输入命令 sort -n zxk | uniq -u ,按照纯数字排序,并显示位一的行;
6. tr
命令 | 含义 |
---|---|
tr ‘a-z’ ‘A-Z’ | 小写转大写 |
tr ‘A-Z’ ‘a-z’ | 大写转小写 |
输入命令 cat westos | tr ‘a-z’ ‘A-Z’ 将小写转换为大写并显示内容;
输入命令 cat westos | tr ‘A-Z’ ‘a-z’ 将大写转换为小写并显示内容;
用 tr 对于字符的转换,只能是对于单个字符的转换,对于多个字符的转换会出现问题。
7. && ||
- && ##符合条件动作
- || ##不符合条件动作
当用命令来查看当前主机和其他主机之间是否通信时,对于不了解该机制的人来说,判断其是否通信比较麻烦,可以用命令来转化输出的结果,清晰可见。
如输入命令 ping -c1 -w1 192.168.122.1 > /dev/null && echo 192.168.122.1 is up || echo 192.168.122.1 is down,表示在网络通常时,显示 192.168.122.1 is up,当网络不通时,显示echo 192.168.122.1 is down;
还可以用简单脚本的书写,以及脚本的调用方式来输出结果。
8. test
test = [ ] ##[ ]就相当于 test 命令
test ”$a" "$b" = [ "$a" = "$b" ]
test 数字对比
字符 | 含义 |
---|---|
! | 取反 |
!= | 不等于 |
-eq | 等于 |
-ne | 不等于 |
-le | 小于等于 |
-lt | 小于 |
-ge | 大于等于 |
-gt | 大于 |
给 a 、b 、c 分别赋予不同的值来测试大于等于小于等信息的对比,操作如下图所示:
test 的条件关系
参数 | 含义 |
---|---|
-a | 并且 |
-o | 或者 |
对于以上数字的测试,除了单个条件的对比之外,还可以加上条件来进行对比,操作如下图所示:
test对空的判定
参数 | 含义 |
---|---|
-n | nozero 判定内容不为空 |
-z | zero 判定内容为空 |
对于内容的判断,可以用以下的操作来判断内容是否为空。
test 对于文件的判定
参数 | 含义 |
---|---|
-ef | 文件节点号是否一致(硬链) |
-nt | 文件1是不是比文件2新 |
-ot | 文件1是不是比文件2老 |
-d | 目录 |
-S | 套结字 |
-L | 软链接 |
-e | 存在 |
-f | 普通文件 |
-b | 块设备 |
-c | 字符设备 |
对于文件节点号以及文件建立时间的判断如图所示:
对于文件类型的判断如下:
脚本测试 :
- ifconfig 网卡,可以显示此网卡的信息; 显示信息中包含此网卡使用的 ip 地址;请用命令过滤此 ip 并在输出时只显示 ip 其他信息不显示。
用以下两种方式:
输入命令 ifconfig enp1s0 | grep “inet” | cut -d " " -f 10,从网卡信息中过滤出 inter 信息,用空格做为分割符,显示第10列信息;
输入命令 ifconfig enp1s0 | cut -d " " -f 10 | head -n2 |tail -n1,从网卡信息中用空格做为分割符,显示第10列信息中的前第二行信息。
- 找出能登陆系统用户中 UID 最大的用户,并显示其名称。
用以下两种方式:
输入命令 sort -t : -k 3 -n /etc/passwd| grep -E "bash $ |sh$ " |cut -d : -f 1| tail -n1,在 /etc/passwd 文件中,用:作为分割符,对第3列按照纯数字排序,并过滤出以 bash 和 sh 结尾的行,以:为分割符,截取第一列,并显示最后一行;
输入命令 grep -E "bash$ |sh$ " /etc/passwd | sort -t : -k 3 |tail -n 1 |cut -d : -f 1,在 /etc/passwd 文件中,过滤出以 bash 和 sh 结尾的行,用:作为分割符,对第3列按照纯数字排序,并显示最后一行,以:为分割符,截取第一列。
- 检测系统中用户是否存在,当存在时提示:用户存在;当不存在时,提示用户不存在;
当脚本后内容为空时,报错: Error : Please input username following script ,并且报错的颜色为红色。
编写脚本内容如图所示,当脚本后内容为空时,报错: Error : Please input username following script ,并且报错的颜色为红色;当脚本内容不为空时,对用户进行判断,当用户存在时输出用户存在;当不存在时输出用户不存在。
对编写的脚本进行测试结果如图所示:
- 在 /mnt/ 中写一个脚本,用来创建和删除用户;
当脚本后跟字符串不足两个时报错: Usage:/mnt/westos.sh < create | delete > < username > ;
在新建用户时:当用户存在,提示:用户存在;当用户不存在时,新建用户,并提示: 用户已经建立;
在删除用户时:当用户存在,执行删除动作,并提示用户已经删除;当用户不存在时,什么都不做,直接退出。
当脚本后跟内容不是新建或者删除时,报错:error:wrong option ,please input create or delete following script.
编写脚本内容如图所示,先判断脚本后跟字符串是不是小于2个,当小于两个时报错;当不小于两个时执行下面的命令,当第一个字符不为 create 或者 delete 时,报错提示输入正确的命令;当为 create 时,判断第二个字符用户是否存在,当存在时输出用户存在,当不存在时建立该用户并输出用户已经建立;当不是 create 时,判断第二个字符用户是否存在,当存在时执行删除动作,并显示用户已经被删除;当不存在时直接退出。
对编写的脚本进行测试结果如图所示:
- 编写脚本 file_check.sh 在执行时,如果脚本后未指定检测文件报错“未指定检测文件,请指定”;如果脚本后指定文件不存在时报错“此文件不存在”;当文件存在时请检测文件类型并显示到输出中。
编写脚本内容如图所示:先判断脚本后内容是否为ie空,当为空时报错;当不为空时再判断是否存在,当不存在时输出文件不存在;当存在时再依次进行判断即可。
注:此处要将链接放在前面,因为链接和文件是同类型,当检测为文件时便会退出,而不检测是否为链接。
对编写的脚本进行测试结果如图所示: