shell脚本系列
###shell中常用的基础命令###
1.首先要知道,所有的程序都是由逻辑加数据组成的。
#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 ##合并输出
实验操作
先建立两个文本文件,如图所示
输入命令尝试即可
#patch
patch 源文件 补丁文件
-b #备份原文件
安装patch软件方法
dnf install patch -y
查看用法
patch --help
刚才已经-u进行合并传输,生成了westos.path文件,故此使用命令
patch westos westos.new 进行打补丁
再使用diff westos westos.new 查看补丁是否已经打好
(总的来说就是用diff -u 生成补丁,用patch打补丁)
#cut:
-d #指定:为分隔符
-f #指定显示的列
-c #指定截取的字符(数字用法同-f)
截取第一列到第五列字符
#sort(排序)
-n #纯数字排序
-r #倒叙
-u #去掉重复
-o #输出到指定文件
-t #指定分隔符
-k #指定排序的列
#uniq(重复部分进行处理)
-c #合并重复并统计重复个数
-d #显示重复的行
-u #显示唯一的行
测试:
1.ifconfig 网卡可以显示此网卡的信息,显示信息中包含此网卡使用的IP地址,请用命令过滤此ip并在输出时只显示ip而不显示其他信息。
思路:先找出网卡信息 ifconfig ens160 ,再过滤出ip地址所在的行 grep "inet ",注意空格是细节,如果不加空格后面的inet6也会被识别到,最后数空格,找到ip地址在第十行,故完成。
2.找出能登陆系统用户中UID最大的用户,并显示其名称。
思考:过滤出/etc/passwd文件下由bash或者sh的所在行
再对其进行排序
再提取出最后一行
用cut命令取出名字
#tr
tr ‘a-z’ ‘A-Z’ #小写转换为大写
tr ‘A-Z’ ‘a-z’ #大写转换为小写
(也可以用于转换字符)
测试:使用shell脚本,在系统中查找haha ,goudan用户是否存在
不加用户名输入发现输出有问题
加入一个判定,解决不输入用户名不报错的问题
#test
test = [] #[]就相当于test命令
”test b“ = [ “b” ]
test数字对比
= #等于
!= #不等于
-eq #等于
-ne #不等于
-le #小于等于
-lt #小于
-ge #大于等于
-gt #大于
test条件关系
-o #或者
-a #并且
test对空的判断
-n #nozero 判定内容不为空
-z #zero 判定内容为空
test对文件的判断
-ef #文件节点号是否一致
-nt #文件1是不是比文件2新
-ot #文件1是不是比文件2老
-d #目录
-S #套接字
-L #软连接
-e #存在
-f #普通文件
-b #块设备
-c #字符设备
测试1:
1.脚本名以及位置/mnt/westos.sh。
2.脚本后可加参数/mnt/westos cr/eate delete
3.后面所跟参数是create lee存在
显示 lee: lee is exist
若不存在时会建立lee ,并显示,lee is created
4./mnt/westos.sh delete lee
当lee存在时
删除lee 并显示lee deleted
当lee不存在时,什么都不做
当/mnt/westos.sh hah lee
报错
ERROR:wrong options hah.Please input create and delete following script.
当/mnt/westos.sh 后所跟字符串不足两个时把报错
Usage:/mnt/westos.sh <create | delete> <username’>’
经过修改后功能齐全-
测试2:
file_check.sh在执行时
如果脚本后未指定检测文件报错”未检测指定文件,请指定“
如果脚本后指定文件不存在报错“此文件不存在”
当文件存在时请检测文件类型并显示到输出当中
尝试了能想到的方法,没什么问题
后续正在更新…
###文本处理工具###
###shell脚本的基本知识###
###shell脚本中的变量###
###shell的执行流控制###
###shell中的运算###
###shell应用实例###