## 1.diff ##对比文件或目录的不同
用法:
diff [options] files|directorys
diff westos westos1
输出信息:
[num1,num2][a|c|d][num3,num4]
num1,num2 ##第一个文件中的行
a ##添加
c ##更改
d ##删除
< ##第一个文件中的内容
> ##第二个文件中的内容
num3,num4 ##第二个文件中的行
常用参数:
-b ##忽略空格
-B ##忽略空行
-i ##忽略大小写
-c ##显示文件所有内容并标示不同
-r ##对比目录
-u ##合并输出
2.patch 补丁
dnf install patch -y 下载补丁服务
diff -u westos westos1 > westos.path 生成补丁
patch 原文件 布丁文件
patch westos westos.path
-b ##备份原文件
patch -b westos westos.path
3.cut 截取文件信息
cut
-d : ##指定:为分隔符
-f ##指定显示的列 5第五列|
3,5 3和5列|
3-5 3到5列|
5- 第五列以后|
-5 到第五列
cut -d: -f 1 passwd
-c ##指定截取的字符(数字用法同-f)
cut -c 1-5 passwd
4.sort 对文件信息进行排序
-n ##纯数字排序
-r ##倒叙
-u ##去掉重复
-o ##输出到指定文件
-t ##指定分隔符
-k ##指定排序的列
5.uniq 统计重复信息
-c #合并重复并统计重复个数
-d #显示重复的行
-u #显示唯一的行
测试:
(1.ifconfig 网卡 可以显示此网卡的信息
显示信息中包含此网卡使用的ip地址
请用命令过滤此ip并在输出时只显示ip其他信息不显示
ifconfig ens3 | head -n 2 | tail -n 1 | cut -d " " -f 10
(2.找出能登陆系统用户中UID最大的用户,并显示其名称
grep bash /etc/passwd | sort -rn -t : -k 3 | cut -d : -f 1 |head -n 1
6.&& ||
&& 符合条件作动作 命令成功执行&&之后的命令
|| 不符合条件作动作 命令失败执行||之后的命令
例 ping -c1 -w1 172.25.254.125 &> /dev/null && echo up || down
检测125是否能ping通
vim test.sh
#!/bin/bash
ping -c1 -w1 172.25.254.125 &> /dev/null && {
echo up
}||{
echo down
}
sh test.sh
检测用户在系统中是否存在
vim test.sh
#!/bin/bash
id $1 &> /dev/null && {
echo hello is exist
}||{
echo hello is not exist
}
sh test.sh westos
7.tr
tr 'a-z' 'A-Z' ##小写转大写
tr 'A-Z' 'a-z' ##大写转小写
tr 'e' 'x' ##转换单个字符
8.test 对比判定
test = [] ##[] 就相当于test命令
test "$a" = "$b" = [ "$a" = "$b" ]
在书写[]内容时 两边必须有空格,元素必须用引号引起来
test数字对比
=
!=
-eq ##等于
-ne ##不等于
-le ##小于等于
-lt ##小于
-ge ##大于等于
-gt ##大于
test的条件关系
-a ##并且
-o ##或者
检测是否是10以内数字
vim check.sh
#!/bin/bash
[ "$1" -ge "0" -a "$1" -lt "10" ] && {
echo $1 is in 0-9
}||{
echo $1 is not 0-9
}
sh check.sh 11
test对空的判定
-n ##nozero 判定内容不为空
-z ##zero 判定内容为空
test对于文件的判定
-ef ##文件节点号是否一致(硬链)
-nt ##文件1是不是比文件2新
-ot ##文件1是不是比文件2老
-d ##目录
-S ##套结字
-L ##软连接
-e ##存在
-f ##普通文件
-b ##快设备
-c ##字符设备
学员检测
编写脚本完成以下条件
file_check.sh 在执行时
如果脚本后未指定检测文件报错“未指定检测文件,请指定”
如果脚本后指定文件不存在报错“此文件不存在”
当文件存在时请检测文件类型并显示到输出中
vim file_check.sh
#!/bin/bash
[ -z "$1" ] && {
echo 未制定测试文件,请制定
} || {
[ -e "$1" ] && {
file $1
} || {
echo $1 不存在
}
}
sh file_check.sh