Shell基础编程2

本文介绍了shell编程中的颜色输出、函数使用、字符串操作(如颜色、截取、替换、删除)、随机密码生成、正则表达式的应用,以及sed和awk工具在文本处理、IP地址统计和文件内容分析中的作用。
摘要由CSDN通过智能技术生成
 
echo的扩展功能使字体带颜色\033[32m是修改颜色后面的\033[0m是把字体颜色修改回来
c0b78f12d88f49ac9805cff38760cd0a.png
shell函数:将一些需要重复使用的操作,定义为公共的语句块,使脚本代码更简洁,增强易读性,提高shell脚本的执行效率
写一遍函数名就是调用一遍函数
b9bb5cdcb0cf427d9e36147048e9431f.png
或者使用function定义函数
15f7a7370e794c6394a82fa6e36404b9.png
函数传值
835d02cb2fa54b498206ee2f49e6ea8e.png
07d944aeff754225bb8169f7ac7609c0.png
编写脚本让查看服务状态显示颜色
4b8ad9fbb75148f68109db5cda4f18eb.png
98080f4836b14db1a6f7e3dc63e8c56c.png
字符串的处理:不改变变量的值,变量需要重复赋值才会改变
1、字符串的截取:${变量名:起始位置:长度},起始位置默认从0开始,
8937a11979df41739bbcbe0644f41449.png
$RANDOM随机变量
808df987e05f4286a897b30f1d237a2c.png
编写随机8位密码脚本
7d4ffd966c934443a9a8facd49d0a55f.png
bcf710aa12704dc08c2e51b931c811a3.png
2、字符串的替换:${变量名/旧的/新的},只替换第一个字符,两个//替换所有要替换的字符
910915bfb2a34f509ccd193f62d1c996.png
替换空为删除
6769741fa9f04da1b78fe6d0bfb9e15e.png
3、字符串的删除(掐头去尾):变量
从左到右${变量名#要删除的内容},也可以使用通配符,两个##表示匹配较长的字符
9e3455ae9baa4eb08deec3ca436ea8ba.png
从右到左${变量名%要删除的内容},两个%%表示匹配较长的字符
d65c0f3cfd7947298f9b8694f62c6e7b.png
编辑修改文件后缀名脚本
先创建10个文件
07d05cb219e14ea79bd6f7def74be615.png
编写脚本
67ee42d0480446fd8f36a9ad8c757f46.png
63eb8ae31c874bba91b638686fb1fa6d.png
4、变量的初始值检测及设置:${变量名:-初始值},若变量已经存在并且不为空则返回变量的值,若为空则返回设置的初始值
c23ef4e73f57467bb50fa09eb0c60b76.png
输入密码时可以设置默认密码
ddb5284bc4404673a0fee23f0761f219.png
cacab641e8fa42c4b715db6382af7a29.png
正则表达式:使用若干符号配合工具对字符串进行增删改查操作
先把/etc/passwd的前5行传输到一个文件中作为实验文件
ebc1bc99f5b842d2946f42dd2794aaf0.png
^符号匹配以什么为开头的字符串
43492a8c319e4af88dd9a61349ad1c81.png
$匹配以什么为结尾的字符串。
7534d646017549ae9015d4b91fbeec83.png
^$表示空行,表示取反-v
6183b79d6087417b90273bebd254f34b.png
[ ]表示集合,里面的所有字母都查找,不是单个字符串
8e8aac91e3384861b1700b1078f1c237.png
[a-z]、[A-Z]、[0-9],匹配任意字母和数字
fcb1c21606a444f4bd7f95fbd365cbf0.png
[^]对集合取反,显示字母和数字之外的符号
cb3f8c91180543cbb1fd1d903b75c1d5.png
860a7eca280f4b2a891fb1fc9135cf92.png
如果echo $?等于0表示输入的是非数字
‘ . ’匹配当个字符
ba0568ffa03143738378ad6b8f46f855.png
‘ * ’匹配前一个字符的任意次数
f183e62b5ac64d94a26864263378efe9.png
‘ .* ’表示任意字符
637e5ce2354248a7a6b03b21c67910fc.png
\{n,m\}匹配前一个字符n到m次
\{n\}匹配前一个字符n次
\{n,\}匹配前一个字符n次及以上
be1875ca4df74b82961f5c04f442dc15.png
\(\)组合为整体,把0:当为一个整体
9dbb68dbecde4e83a29be19034b53431.png
扩展正则规则需要加上-E或者egrep命令
{n,m}匹配前一个字符n到m次
()组合为整体
b3105062e98b4a10a2862434fa8170c2.png
+匹配一个或多个字符,相当于\{1,\}或者{1,}
dec1b781c3e3403aa201d5b97944328d.png
?最多匹配一次,相当于\{0,1\}
21ecfc1c3a2042e3880a655ad4e972e8.png
| 表示或者,匹配多个字符串
ae39f9a2b56d4a3baae2051a1369eb2f.png
\b 单词边界,在旁边不允许出现数字字母下划线(或使用   \<xxx>\)
03df86e759ef4c808daaf8c8a4c2b722.png
d6e45a3c43c448ab844fe78323594cc5.png
fb3b696ee49742dfacbf8e95a0892ec1.png
\w匹配数字字母下划线
385d9bb5e82e498fb98f1839031016ff.png
\s匹配空格和tab键
258565e4a58a4c40897bf495595d49b6.png
\d匹配数字(和[0-9]等效)
85e8d8d3011941b28041d9461c85254b.png
匹配IP地址0-255拆分成三个部分(250-255、200-249、0-199)
:(25[0-5]\.|2[0-4][0-9]\.|1?[0-9]?[0-9]\.){3}(25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])
e122c3f4ad39493b91a9e6c9c0c5bb89.png
\d替换[0-9]:(25[0-5]\.|2[0-4]\d\.|1?\d?\d\.){3}(25[0-5]|2[0-4]\d|1?\d?\d)
c6d870e0f5794ff285708b6786b20213.png
sed流式编辑器:可以对文档非交互式增删改查,逐行处理
1.前置指令 | sed 选项 条件 指令
2.sed 选项 条件 指令  被处理文档
选项:-n:屏蔽默认,-r:支持扩展正则,-i:修改源文件
条件:行号 , /字符串/
指令:p:输出,d:删除,s:替换
13c50847277b43449d8de43b55c26d6d.png
使用-n屏蔽默认输出
0d4ed11f33e74af2a0f7894c3d29a804.png
查看具体行的字符串
048d164178a4451e95c2de9894335d21.png
查看连续行
4be807f0f9fd472789b51f45b6e95389.png
8da74a4dadad4c09bdebd77fd275db37.png
查看不连续多行
7ea02b2e4edc4c629ce13c9d8d5cd4d2.png
查看字符串的行
64dcea7f2da24567ba5aeea4ee201a88.png
8131b7c6012542d7a0c9f26727029dc2.png
!取反
f0c8a0a4d3264b8d9c0e4c502f2595f4.png
$表示最后一行,‘=’表示输出行号
56f13adbe814417c9bcf446dc5e6b778.png
例如以bin开头的是第几行
864c204eae7241679b2ac38b6ba3fd6d.png
d删除
66c5dc2f9776460fa0d9db6ca3fe3647.png
删除所有空行
ebe34cf22607473bb2dfb83c23525932.png
s替换 符号 / / /(可替换# # #)
编写实验数据
9f007678ded247ef9d04abc3de3ca0df.png
没有说行号把每个行的第一个匹配的替换 d28014bf64da40cabea16b8bb6621318.png
匹配第二个数据
0d0cef5a99b8428c8ad8ce0aba20f7f9.png
匹配第三行第三个数据
b37a99996d924f53a6faa11398461b7b.png
使用字符串匹配行然后再替换要替换是字符串
435dd961340a452b80ecf1776cffbf22.png
g表示全换
fca204132ad941a998e25fe809dd3983.png
将/bin/bash替换/sbin/sh
8e68c144303c448ab39b7734dfad6f14.png
或者修改s后面的三个字符
773c67565e124bd586e613cb9f876256.png
加-i修改源文件
784bd9a8d0924be5b5de08395a67f200.png
编写脚本:下载配置http服务默认82端口
150adb0e767b480f897866c8f9e09fe9.png
执行该脚本
b5914c55b91b4b9f84ea865735cc8289.png
此时修改成功
09519a77791c43b4a2f18dc48db464a5.png
编写脚本:查找所有使用bash的账户,并且以账户名-->密码保存一个文件
6b6facb82901401da2f8757061dc7d11.png
251e14fdda074ff7b83fd3a56ae65658.png
执行脚本
92c65e4733084351a6cc2d4be468eb42.png
()表示保留,将括号内复制,\数字表粘贴位置
174e64a07c8c43a9b8dbe172c3857386.png
a行下追加
8cdf99262c4d4b0ba16ac9127d08df06.png
i:行上追加
28308022fda24e28a7c0ac9f96985bad.png
c:整行替换
7b6c052e91f4430c9c61c083138cd66d.png
awk:精确搜索,逐行处理,读取文档时执行 在  ‘{ }’中处理指令
1.前置指令 | awk 选项 条件 指令
2.awk 选项 条件 指令  被处理文档
选项:-F定义分隔符,默认空格分隔符
指令:print 输出
条件:/字符串/,$5~包含,NR/$3== != >= <= ,逻辑组合&& ||
$数字表示第几列,NF表示有几列,NR表示有几行
9a503fa78754428cbeb8ccb9aae0215b.png
4c95c9da4ded4e33b425e622d58a8908.png
4d23285d547e443487fcefc303c698ee.png
59ff8887e3484cfb88962af4cb63a666.png
常量放在双引号中
0adfb29eef244129b84f8b827e3a23c8.png
输出根目录可用内存
140816ad1c5d431192c2961260d0f6f4.png
ba502e13befa4a198d6d88e52624a666.png
查看网卡的数据量
93a567e244d04eadbd1b07c458d75ad7.png
bba0bca967e2474bb93e3e994d159b34.png
在awk中不加双引号为变量
37cba65ef16547c7a094089d48c8e46f.png
~包含,第五列不包含root
34f1e893343d44259c837148037cdb9c.png
==,<=,>=,!=
输出第二行
2a1caf648b8146c28cbc563e4db0709c.png
第三列大于等于2
363a47bd63684d568901b0a656375ea5.png
逻辑组合&&、||
84448c85800c4f2882b0f3d886d97f3d.png
这样会输出所有
1bba363f0287439893a5189b13ad3c46.png
==表示精确搜索
8ace894dee5344b0a6751c63ea4c7c20.png
而~包含即可
a3723cc9f40a462cb5490a5ac90c0251.png运算
2189b73c9e674fe895d7b17f05b6afb9.png
awk的处理时机, 执行额外任务
BEGIN任务,执行一次,读取文档前执行
547637630b334397bd03a49f32212344.png
逐行任务,执行n次,读取文档时执行
db8a2884356a4299967cf7bf0f998e7b.png
END任务,执行一次,读取文档后执行
718cde79166f48e0a8f697821138d454.png
81ec685acc72494ba624169c75899a4b.png
统计用户
b808278062f54934bf9005ded7cdcc5c.png
awk数组:相当于可以存储多个值的特殊变量
数组名[下标] = 下标对应的值
3e34a05e15954593a8a684e7d9f705da.png
查看文件中相同的个数
3fe195f16895403094572fe9d8bd9987.png
awk的for循环:for(变量名 in 数组名){print 变量名}
统计文件中相同的个数并输出各自的个数
b4b48c3f32f74a5b989473cb2b5fd8a6.png
统计来访网站的IP地址和访问次数记录(/var/log/httpd/access_log)
acd9de7cfec2480eb7443e2cb4967461.png
当其他主机访问100次时也会统计到
a72e52b59b364c2882d82c5034571f4f.png
86a7d507d1754d889e28a97588983cc5.png
把统计结果排序,sort (-n 表示按数字排序,-k表示第几列,-r表降序)默认升序 在n后面加r表降序
e449acbf26944d108bfcc4d9b211a635.png
统计安全日志中登录主机失败的ip地址和次数
46183b97d62449a4b3cedaae96077ce7.png
相关的awk应用
4273757f378742f7aa8a6007bdb6d3c3.png
7bc0c8130f2041a08e3bfda9d743666a.png
 
 
 
 
 

 

  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值