Linux程序设计(Linux shell编程十三)

本文深入探讨了Linux shell编程中的通配符和正则表达式,包括它们的用途、基本语法及应用实例,旨在帮助读者理解如何在shell脚本中高效地进行文件路径匹配与文本过滤。


各位看官,咱们在上一回主要说了Linux shell编程中的标准输入和标准输出,以及管道和重定向。估计

大家对各种输入和输出都感觉烦了吧,咱们今天说一些与输入输出无关的内容:通配符和正则表达式。


通配符:*?。通配就是把不确定的文本扩展成具体文本的过程。好拗口呀。还是举个例子来说一下吧。

比如us?就是一个不完整的文件,可以将其扩展成具体的文本:usr。通配需要借助通配符来实现其功能,

常用的通配符有*和?。下面咱们来说说各个通配符的含义。


通配符*表示任意位置的任意字符。例子:ls a*会把当前目录中以a开头的文件或者文件夹都显示出来。


通配符?表示它所在位置的任意一个字符。例子:ls a?会把当前目录中以a开头并且后面只有一个字符的

            文件或者文件夹都显示出来。对比一下可以发现,a*对文本中字符的数量没有限制,a?限制文本

            中只有一个字符。注意,这是他们的区别。


看官们,通配 符的内容不多,估计大家都不累,那么咱们接着说正则表达式怎么样?OK。


正则表达式:就是一种模式模板,Linux命令可以使用该模板去过滤无用的数据,从而得到有用的数据。

正则表达式的模式有文本,字符,字符和文本混合体。文本可以是自己定义的任何本文,比如hello也

可以当作文本。特殊字符有.*[]^$<>{}\+?|.下面一一说明这些特殊符号的意义。

.用来匹配它所在位置的任意一个字符

*用来匹配它前面的字符有0次或者多次重复

?用来匹配它前面的字符有0次或者1次重复

+用来匹配它前面的字符有1次或者多次重复

^用来匹配行首的字符是它后面的字符。

$用来匹配行尾的字符是它前面的字符。它通常写在字符后面,和^的功能正好相反。

[ ]用来匹配一个范围。比如[ Mint Ubuntu Debin]表示匹配其中的任意一个元素。[1-9]表示匹配1-9这个

范围内的数字。[a-z]表示匹配a到z之间的字母。^和[]一起使用时表示取反,例如[^1-3]表示匹配的内容是

不在1到3范围内的数字。

\转义符号。因为这些特殊符号有专门的意义,所以如果想在文本中使用他们的话,需要使用转义字符。

|表示或和关系, 可以把多个正则表达式通过它连接起来

<>表示精确匹配,比如book,good,都有oo。如时使用<>精确匹配oo时它们不会被搜索到。


各位看官,正则表达式是一个独门而且庞大的分支,这里只是做一些简单的说明,如果大家对正则表达式

感兴趣,我们在以后的回合中再做详细的介绍和说明。因此这里不再举例子了。


细心的看官们已经发现*和?这两个符号既是通配符,也是正则表达式中的特殊字符。不过它们的意义有些

不一样,大家需要注意一下。关于通配符主要使用在bash中,在bash中经常使用通配符进行通配。而正

则表达式使用在bash的命令或者工具中,比如grep,find命令以及sed,awk工具。


各位看官,关于通配符和正则表达式的内容,咱们都说完了。欲知后事如何,且听下回分解。

前言 10 场景说明 11 基础知识简介 14 Linux 14 Linux产生与发展 14 Linux特点和优势 15 Shell 16 Shell脚本语言与编译型语言的差异 17 Shell分类 18 Shell使用 19 项目 初识Linux Shell 20 [学习目标] 20 任务1.1 构建开发环境 22 任务1.2 vi/vim编辑器 33 1.2.1 vim使用实例 34 1.2.2 vim按键说明 36 任务1.3 Shell常用命令 41 1.3.1 基础命令 41 1.3.2 文件、目录操作命令 42 1.3.3 系统管理命令 52 1.3.4 关机/重启/退出 53 1.3.5 安装操作命令 53 1.3.6 用户操作命令 54 1.3.7 网络下载命令 55 1.3.8 服务操作命令 57 任务1.4 Shell脚本 58 1.4.1 第shell脚本:Hello World 58 1.4.2 脚本介绍 59 1.4.3 shell程序结构 59 1.4.4 shell脚本运行 60 任务1.5 Shell案例:打印有色彩的文本 61 任务1.6 Shell案例:图案打印 62 练习(每题10分,共计100分) 66 项目Shell变量 67 [学习目标] 67 任务2.1 Linux环境变量 68 2.1.1 查看环境变量 69 任务2.2 Shell变量 70 2.2.1 定义变量 70 2.2.2 使用变量 70 2.2.3 只读变量 71 2.2.4 删除变量 72 任务2.3 特殊符号 72 任务2.4 Shell案例:显示系统信息: 78 练习(每题12.5分,共计100分) 80 项目Shell传递参数 81 [学习目标] 81 任务3.1 Shell传递参数 82 任务3.2 Shell案例:参数比较 85 任务3.3Shell案例:通过参数描述变量 86 练习(前两题每题30分,第三题40分,共计100分) 87 项目Shell数组 89 [学习目标] 89 任务4.1 定义数组 90 任务4.2 使用数组 90 任务4.3 Shell案例:数组的使用 92 练习(100分) 95 项目Shell运算符 96 [学习目标] 96 任务5.1 Shell基本运算符 97 5.1.1 运算符 97 5.1.2 算术运算符 97 5.1.3 关系运算符 99 5.1.4 布尔运算符 101 5.1.5 逻辑运算符 103 5.1.6 字符串运算符 104 5.1.7 文件测试运算符 106 任务5.2 Shell案例:计算器 109 练习(每题25分,共计100分) 111 项目Shell命令输出 112 [学习目标] 112 任务6.1 Shell echo命令 113 任务6.2 Shell printf命令 116 任务6.3 Shell test命令 119 任务6.4 Shell案例:查看系统资源使用情况 122 练习(每题20分,共计100分) 125 项目Shell流程控制 126 [学习目标] 126 任务7.1 Shell流程控制 127 7.1.1 if 判断语句 127 7.1.2 for 循环语句 130 7.1.3 while 循环语句 131 7.1.4 until 循环语句 134 7.1.5 case多选语句 135 7.1.6 跳出循环体 137 任务7.2 Shell案例:重复执行命令和简单计算器 139 任务7.3 Shell案例:使用三种循环结构打印九九乘法表 141 练习(前两题每题30分,第三题40分,共计100分) 144 项目Shell函数 146 [学习目标] 146 任务8.1 Shell函数 147 8.1.1 Shell中函数的定义 147 8.1.2 函数参数 150 任务8.2 Shell案例 151 8.2.1 指定多个文件的行数 151 8.2.2 当前目录的所有文件 153 练习(每题50分,共计100分) 156 项目Shell输入/输出重定向 158 [学习目标] 158 任务9.1 linux文件描述符 159 任务9.2 Shell输入/输出重定向 160 9.2.1 输出重定向 160 9.2.2 输入重定向 163 9.2.3 重定向深入讲解 164 任务9.2 Shell案例:通过重定向测试批量添加ip 166 练习(每题25分,共计100分) 169 项目Shell文件包含 171 [学习目标] 171 任务10.1 Shell文件包含 172 任务10.2 Shell案例:查找最大文件 172 练习(每题50分,共计100分) 174 项目 Shell文本处理命令 175 [学习目标] 175 任务11.1 学习和使用grep 176 任务11.2 学习和使用sed 179 任务11.3 学习和使用cut 183 任务11.4 学习和使用awk 185 练习(第题10分,第2-7每题15分,共计100分) 188 项目十二 Shell的调试 189 [学习目标] 189 任务12.1 使用trap命令 190 任务12.2 使用tee命令 192 任务12.3 使用“调试钩子” 193 任务12.4 使用Shell的执行选项 194 练习(每题50分,共计100分) 196 项目十三 Shell综合案例(lnmp+wordpress) 197 [学习目标] 197 任务13.1 手动安装Linux Nginx Mysql PHP和WordPress 198 13.1.1 准备工作 198 13.1.2 安装Mysql5.6.29 199 13.1.3 安装PHP5.5.12 202 13.1.4 安装Nginx1.10 205 13.1.5 安装WordPress 206 13.1.6 启动网页 207 任务13.2 脚本安装Linux Nginx Mysql PHP 和WordPress 207 13.2.1 初始化安装脚本编写 207 13.2.2 Mysql安装脚本的编写 209 13.2.3 PHP安装脚本的编写 211 13.2.4 Nginx安装脚本的编写 213 13.2.5 WordPress安装脚本的编写 214 13.2.6 验证wordpress 216 练习(每题50分,共计100分) 218 项目十四 shell综合案例二(安装Openstack) 219 [学习目标] 219 任务14.1 手动安装Openstack 220 什么是Openstack 220 14.1.1基本环境准备 222 14.1.2 安装mysql数据库服务 225 14.1.3 安装keystone认证服务 226 14.1.4 安装glance镜像服务 230 14.1.5 安装nova计算服务 233 14.1.6 安装neutron网络服务 238 14.1.7 安装dashboard服务 248 任务14.2 脚本安装openstack 250 14.2.1 基本环境脚本的编写 255 14.2.2 mysql脚本的编写 256 14.2.3 keystone脚本的编写 258 14.2.4 glance脚本的编写 263 14.2.5 nova脚本的编写 266 14.2.6 neutron脚本的编写 270 14.2.7 dashboard脚本的编写 279 14.2.8 验证登录,使用openstack 280 附录Shell编码规范说明 295 1. 什么时候使用shell 295 2.Shell文件和解释器调用 295 3.环境 296 4.注释 296 5.格式 298 6.特性及错误 304 7.命名转换 308 8.调用命令 311
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值