一、diff
1.用法
diff [options] files|directorys
2.输出信息
[num1,num2][a|c|d][num3,num4]
~ | ~ |
---|---|
num1,num2 | 第一个文件中的行 |
a | 添加 |
c | 更改 |
d | 删除 |
< | 第一个文件中的内容 |
> | 第二个文件中的内容 |
num3,num4 | 第二个文件中的行 |
3.常用参数
~ | ~ |
---|---|
-b | 忽略空格 |
-B | 忽略空行 |
-i | 忽略大小写 |
-c | 显示文件所有内容并标示不同 |
-r | 对比目录 |
-u | 合并输出 |
diff -u westos westos.new > westos.path 将俩文件的不同导入到补丁文件当中
二、patch
- patch 原文件 布丁文件
- -b 备份原文件
dnf install patch -y
patch -b jjr jjr.patch #为原文件jjr打补丁且备份原文件
三、cut
~ | ~ |
---|---|
-d | 指定分割符 |
-f | 指定显示列 5/第五列 3,5/3和5列 3-5/3到5列 5-/五列以后 -5/到第五列 |
-c | 指定截取的字符 |
cut -d : -f 1 passwd
cut -d : -f 2,1 passwd
cut -d : -f 1-2 passwd
cut -d : -f -3 passwd
cut -d : -f 3- passwd
cut -c 1-5 passwd
四、sort
~ | ~ |
---|---|
-n | 纯数字排序 |
-r | 倒叙 |
-u | 去掉重复 |
-o | 输出到指定文件 |
-t | 指定分隔符 |
-k | 指定排序的列 |
sort -nru num
sort -nru num -o num1
sort -t : -k 2 -n num
五、uniq
~ | ~ |
---|---|
-c | 合并重复并统计重复个数 |
-d | 显示重复的行 |
-u | 显示唯一的行 |
sort -t : -k 2 -n num | uniq -cd
sort -t : -k 2 -n num | uniq -cu
测试:
1.ifconfig 网卡 可以显示此网卡的信息,显示信息中包含此网卡使用的ip地址,请用命令过滤此ip并在输出时只显示ip其他信息不显示
2.找出能登陆系统用户中UID最大的用户,并显示其名称
3.当前主机为web服务器,请抓取访问web服务器次数排在前5的ip地址
注:具体看练习题专栏!!!
六、tr
cat jjr | tr 'a-z' 'A-Z' #小写转大写
cat jjr | tr 'A-Z' 'a-z' #大写转小写
七、&& ||
~ | ~ |
---|---|
&& | 符合条件作动作 |
|| | 不符合条件作动作 |
id user &> /dev/null && echo yes || echo no #符合不报错输出yes,不符合报错输出no
简单测试用户存在脚本:
vim usertest.sh
///
id jaijiren &> /dev/null &&{
echo -e "\033[32mjiajiren is exit\033[0m"
}||{
echo -e "\033[31mjiajiren is not exit\033[0m"
}
///
sh usertest.sh
八、test
test = [ ]
[ ] 就相当于test命令- “test $a = b " = [ " b" = [ " b"=["a” = “$b” ]
1.test数字对比
~ | ~ |
---|---|
=/-eq | 等于 |
!=/-ne | 不等于 |
-le | 小于等于 |
-lt | 小于 |
-ge | 大于等于 |
-gt | 大于 |
[ "/mnt/jjr" -ef "/mnt/jjrpro" ] && echo yes || echo no #前后一定要有空格!
2.test的条件关系
~ | ~ |
---|---|
-a | 并且 |
-o | 或者 |
3.test对空的判定
~ | ~ |
---|---|
-n | nozero 判定内容不为空 |
-z | zero 判定内容为空 |
unset a #对于变量数值的彻底删除
4.test对于文件的判定
~ | ~ |
---|---|
-ef | 文件节点号是否一致(硬链) |
-nt | 文件1是不是比文件2新 |
-ot | 文件1是不是比文件2老 |
-d | 目录 |
-S | 套结字 |
-L | 软连接 |
-e | 存在 |
-f | 普通文件 |
-b | 快设备 |
[ "/mnt/jjr" -ef "/mnt/jjrpro" ] && echo yes || echo no
[ -d "/mnt" ] && echo yes || echo no
测试:
编写脚本完成以下条件
file_check.sh 在执行时
如果脚本后未指定检测文件报错“未指定检测文件,请指定”
如果脚本后指定文件不存在报错“此文件不存在”
当文件存在时请检测文件类型并显示到输出中
注:具体看练习题章节!