shell脚本的应用

shell

脚本

diff

用法
diff [options] files |directorys

输出信息:

[num1,num2][a|c|d][num3,num4]
num1,num2 ##第一个文件中的行
a ##添加
c ##更改
d ##删除
< ##第一个文件中的内容

                ##第二文件中的内容

num3,num4 ##第二个文件中的行

常用参数:

-b ##忽略空格
-B ##忽略空行
-i ##忽略大小写
-c ##显示文件所有内容并标示不同
-r ##对比目录
-u ##合并输出
在这里插入图片描述
在这里插入图片描述

2.path

patch 原文件 补丁文件
-b ### 备份原文件
在这里插入图片描述

diff -u westos westos1 > westos.path ##对比westos 和westos1的不同生成 补丁文件westos.path
patch westos westos.path ##打补丁
diff westos westos1 ##此时文件westos,和文件westos1没有区别

在这里插入图片描述
注:生成的备份文件会以**.org** 的后缀保存成文件

3.cut

cut
-d : ##指定 : 为分割符
-f ##指定显示的行
5 第五行
3,5 3和5行
3-5 3到5行
5- 第5行以后
-5 到第五行
-c ##指定截取字符(数字用法同-f)
在这里插入图片描述

在这里插入图片描述

4.sort

-n ##纯数字排序

-r ##倒叙
-u ##去掉重复
-o ##输出到指定文件
-t ##指定分隔符
-k ##指定排序的列
在这里插入图片描述

在这里插入图片描述

5.uniq
-d ##显示重复的行
-c ##合并重复并统计个数
-u ##显示唯一的行
在这里插入图片描述

5.&& ||

&& ##表示符合条件的动作
|| ##不符合条件的动作
实验演示:
在这里插入图片描述

text

text=[] ##[]就相当于text命令
“text $a = b ” = [ " b ” = [" b=["a"="$b"]

text的数字对比

=
!=
-eq ##等于
-ne ##不等于
-le ##小于等于
-lt ##小于
-ge ##大于等于
-gt ##大于

text的条件关系
-a ##并且
-o ##或者

text 对空的判定
-n ##nozero 判定内容不为空
-z ##zero 判定内容为空

在这里插入图片描述

在这里插入图片描述

执行下列脚本来判断用户类型
user_check.sh 用户
用户类型为
super user
system user
common user

text对于文件的判定

-et ##文件节点
-nt ##文件1是不是比文件2新
-ot ##文件1是不是比文件2老
-d ##目录
-S ##套接字
-L ##软连接
-e ##存在
-f ## 普通文件
-b ##块设备
-c ##字符设备

在这里插入图片描述

3.awk

awk -F 分割副 BEGIN {}{}END{} FILENAME

NR ##行数
NF ##列数
FILENAME ##文件名称本身
westos ##westos变量值
“westos” ## westos字符串

/bash$/ ##条件
条件1|条件2/ ##条件1或者条件2
/条件1/||/条件2/ ###条件1或者条件2
/条件1/&&/条件2/ ##条件1并且条件2

$0 #所有的列
$1 #第一列
$2
$3

awk -F : ‘BEGIN{print “userlist:”}{print $1}END{print “end”}’ passwd
userlist:
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
dbus
end
##开头为userlist: 结尾为end
在这里插入图片描述

awk -F : ‘/bash$/{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲' passwd 显示 以ba…/&&/^root/{print $1}’ passwd
显示 以bash结尾并且以root 开头的 第一列

awk -F : ‘/bash$/||/^root/{print $1}’ passwd
显示 以bash结尾或者以root开头的 第一列

awk -F : ‘/bash$/||/^root/{print $1""$2}’ passwd
显示 以bash结尾或者以root开头的 第一列和第二列

awk -F : ‘{print NR }’ passwd
显示行数

awk -F : ‘{print NF }’ passwd
显示列数
在这里插入图片描述

awk -F : ‘{print FILENAME }’ passwd
显示文件本身的名称

awk -F : ‘$7~//bin/bash/{print $1}’ passwd
显示第七列以/bin/bash结尾的第一行

awk -F : ‘$7!~//bin/bash/{print $1}’ passwd
显示第七列不是以/bin/bash结尾的第一行

awk -F : ‘/root/ {print $0}’ passwd
显示含有root 的所有行

awk -F : ‘BEGIN{n=0}/bash ∣ s h |sh sh/&&$6!~/^\home/{N++}END{print N}’ /etc/passwd
在这里插入图片描述

ifconfig ens3 | awk ‘/inet>/{print $2}’

猜你喜欢

转载自blog.csdn.net/Antonhu/article/details/114477765