Linux自动化运维工程师
实验所用系统为Redhat-rhel8.2。
目录
实验环境:
一台配置好网络软件仓库和IP的虚拟机
Linux自动化运维工程师–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 ##合并输出,生成补丁
实验素材:生成两个内容不同的文件
实验:
比较两个文件的不同。第二个文件的第二行比第一个文件增加了一行,内容为123。
给westos1文件内容中加一个空格。第二个文件的第一行和第二行相比第一个文件做了更改,加上-b
参数可忽略空格引起的不同。
在westos1中家一个空行。第二个文件比第一个文件加了第二行和第三行,内容为123和空行。加-B
参数可以忽略空行引起的不同。
将westos1中某个字母改成大写。加-i
参数可以忽略大小写引起的不同。
给westos和westos1中都加上相同字符,仍有大小写区别。加参数-c
,显示文件所有内容并标示不同
新建两个目录,在其中一个中新建文件,加参数-r
可以对比目录的不同。
将diff
命令加上-u
参数,可以将两个文件合并输出,重定向到一个新文件中生成补丁。
二、patch 文件修补命令
dnf install patch -y
patch 原文件 补丁文件
-b ##备份原文件
实验:
安装patch
打补丁工具,对westos进行修补。
此时westos内容与westos1相同。
[注意] 如果原文件对比显示缺少,打补丁后会添加;如果原文件对比显示多出,打补丁后会减少;如果原文件对比显示更改,打补丁后会与补丁内容相同。此时,生成补丁后,默认情况下,原文件内容会被改变,并且不会备份。
如需备份原文件,则加上-b
参数,原文件会被改变,但会生成备份文件,内容与原文件相同。
三、cut 数据截取命令
cut
-d : ##指定:为分隔符
-f ##指定显示的列 5第五列| 3,5 3和5列|3-5 3到5列|5- 第五列以后|-5 到第五列
-c ##指定截取的字符(数字用法同-f)
实验:
删除/mnt里的内容,复制/etc/passwd,编辑passwd文件,为了实验效果,删去一些内容。
截取第一列,以:分割。
截取第一列和第七列,以:分割。
截取第一列到第三列,以:分割。
截取第三列到最后一列,以:分割。
截取第一列到第三列,以:分割。
截取第一个到第四个字符。
- 练习:过滤ens3网卡上的ip并在输出时只显示该ip
分解思路:
四、sort 排序命令
-n ##纯数字排序
-r ##倒叙
-u ##去掉重复
-o ##输出到指定文件
-t ##指定分隔符
-k ##指定排序的列
编辑一个内容为无序数字的文件。
使用sort
命令对westos进行排序。
[注意] 此时,默认以每一列的第一个字符排序。
使用sort
命令以数字
对westos进行排序。
使用sort
命令以数字倒序
对westos进行排序。
使用sort
命令以数字倒序
对westos进行排序并去重
。
使用sort
命令以数字倒序
对westos进行排序并去重
之后输出到指定文件
。
对westos文件添加内容,以:将a和数字分割开。使用sort
命令以-t
参数指定分割符,-k
参数指定排序的列对westos进行排序。
五、uniq 重复数据处理命令
此命令需配合sort
使用。
-c #合并重复并统计重复个数
-d #显示重复的行
-u #显示唯一的行
恢复westos文件为无序数字,可在vim
内使用:%s/a://g
参数统一删除a:
。
对重复的内容进行合并,并统计重复个数。左边一列为重复的次数,右边一列为数字排序。
对重复的内容进行合并,并显示不唯一的行的内容。即输出重复数字的内容。
重复的内容进行合并,并显示唯一的行的内容。即输出不重复数字的内容。
- 练习:找出能登陆系统用户中UID最大的用户,并显示其名称
分解思路:
六、tr 字符转换命令
tr 'a-z' 'A-Z' ##小写转大写
tr 'A-Z' 'a-z' ##大写转小写
实验:
编辑westos文件内容。
对westos文件内容进行字母大小写转换。
将westos文件中单个字母‘e’替换为‘v’。
七、&& || 条件判断
&& ##符合条件作动作
|| ##不符合条件作动作
- 练习:链接172.25.254.109,如果可以ping通,输出yes,不能则输出no。
或者使用脚本。
- 练习:检测westos用户在系统中是否存在,存在显示westos is exist,不存在显示westos is not exist。
或者:在脚本中不指定用户,通过命令行搜索的方式来找到westos用户。$1
指脚本后所跟的第一串字符
八、test 比较命令
test = [] ##[] 就相当于test命令
"test $a = $b" = [ "$a" = "$b" ] ##两边必须有空格,元素必须用引号引起来
1、test数字对比
=
!=
-eq ##等于
-ne ##不等于
-le ##小于等于
-lt ##小于
-ge ##大于等于
-gt ##大于
2、test的条件关系
-a ##并且
-o ##或者
实验:
设定a=1,b=1,使用test命令对a和b进行大小比较,并使用&&和||条件判断进行输出。
3、test对空的判定
-n ##nozero 判定内容不为空
-z ##zero 判定内容为空
实验:
设定a=1,判定a是否为空,并使用&&和||条件判断进行输出。
a=1
[ -z "$a" ] && echo yes || echo no ##判定是否为空
[ -n "$a" ] && echo yes || echo no ##判定是否不为空
- 练习:执行脚本判断数字是否在0-9以内
4、test对于文件的判定
-ef ##文件节点号是否一致(硬链)
-nt ##文件1是不是比文件2新
-ot ##文件1是不是比文件2老
-d ##目录
-S ##套接字
-L ##软连接
-e ##存在
-f ##普通文件
-b ##快设备
-c ##字符设备
实验步骤:
判定文件是否存在。
判定文件类型是否是文件,是否是目录。
判定类型是否为套接字。
判定是否为块设备。
判定是否为链接。
判定是否为字符设备。
- 编写脚本完成以下条件
file_check.sh 在执行时
如果脚本后未指定检测文件报错“未指定检测文件,请指定”
如果脚本后指定文件不存在报错“此文件不存在”
当文件存在时请检测文件类型并显示到输出中