Linux Shell核心编程指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

撰写本书的起因

云计算时代的到来,为企业带来了新的机遇与挑战。有了云计算,所有的资源都可以按需购买,类似于订火车票这样的问题迎刃而解。但是,云计算也给我们带来了新的难题,那就是如何更好地实现自动化运维、智能化运维!我们可以通过Shell、Python、Perl等脚本语言编写自动化脚本实现这样的目标。虽然Python在一些大的自动化项目中已经得到了充分的历练,但是作为Linux自动化运维的主流编程语言,Shell脚本依然不可替代,大量的自动化运维脚本依然需要使用Shell编写。而目前市面上常见的Shell脚本书籍,绝大多数还停留在讲解语法格式、知识点这个层面,很多读者读完类似Shell脚本的图书,发现语法格式学会了,但是在实际编写脚本时却又无从下手。编写本书的出发点就是希望在简单、直观地展现语法格式的同时,通过大量、深入的应用案例,帮助读者朋友们锻炼实际编写脚本的能力,培养思考问题、解决问题的能力。

Shell是一门非常容易上手且功能强大的编程语言,很多Linux系统维护者在工作中都会经常使用Shell脚本,但并不是每个人都擅长编写Shell脚本,一旦掌握了编写Shell脚本的规则与技巧,未来你的工作会更加轻松、更加高效!从1991年起至今,Linux已经快速成长为企业服务器产品的首选操作系统,越来越多的IT企业采用Linux作为其服务器端平台操作系统,为客户提供高性能、高可用的业务服务。本书在选择操作系统发行版本时,综合了各个发行版本的特点,最终选择了CentOS作为本书的基础系统平台。CentOS是众多Linux发行版本之一,但因为其源自RedHat框架,同时该版本完全开源,包括开放的软件YUM源,可以为用户带来更加方便的升级方法。另外,目前国内很多企业对于CentOS发行版也非常热衷,这也增加了本书的实用性。

本书结构

本书分为7章。

第1章主要讲述编写Shell脚本的基本格式及执行脚本的各种方式,如何通过脚本处理变量、使用正则过滤数据、在脚本中进行算术运算。

主要内容包括:

● 脚本的书写格式、执行脚本的各种方式。

● 数据的输入与输出、如何正确使用变量。

● 数据过滤与正则表达式。

● 算术运算。

第2章主要讨论如何让脚本变得更加智能,通过判断语句对各种业务可能出现的状况做出分析与判断,并根据判断结果进行相应的处理。本章会通过大量的案例展示如何编写一个更加健全、智能的自动化脚本。

主要内容包括:

● 如何在脚本中实现各种测试和判断。

● if语句与case语句的基本语法格式。

● 模式匹配、通配符与扩展通配符。

● 编写行业项目案例。

第3章主要讲解如何使用循环避免人为执行工作中大量重复性的任务,大量且重复的机械式任务更适合让机器来完成。当人们找到解决问题的思路和方法后,机器可以更加高效地按照人类的思路和方法处理数据,最终获得我们需要的结果。

主要内容包括:

● for与while循环的基本语法格式。

● 解决猴子吃香蕉的问题。

● 神奇的循环嵌套。

● 猜随机数字的游戏。

● until和select的基本语法格式。

● 循环的中断与退出。

● 机选双色球。

第4章主要讲解数组、子Shell与函数。讲解数组在实际业务中的应用案例,分析子Shell对脚本的影响,讲解函数式编程思想,使用Shell脚本分析目前主流的排序算法。

主要内容包括:

● 斐波那契数列。

● 网站日志分析脚本。

● 启动进程的若干种方式。

● 函数与变量的作用域。

● 多进程脚本。

● 文件描述符与命名管道。

● 排序算法。

第5章主要讲解日常工作中编写脚本的一些技巧与方法,利用Shell的众多功能特性,可以让我们更加轻松地编写功能完善的脚本。本章还通过案例介绍了Shell脚本排错的方法与技巧。

主要内容包括:

● Shell的扩展功能。

● Shell解释器的属性与初始化命令行终端。

● trap信号捕获。

● 脚本排错技巧。

● xargs与shift。

● 编写行业项目案例。

第6章主要讲解文本编辑器sed,脚本借助于sed可以实现非交互编辑文件。在云计算运维工作中,我们经常需要修改或查看配置文件,本章通过大量案例演示如何通过脚本非交互地修改各种服务的配置文件。我们通过sed还可以在海量的数据中过滤需要的数据,可以编写网络爬虫脚本。

主要内容包括:

● sed语法格式。

● 自动配置FTP、DHCP、SSH等网络服务。

● 自动化克隆与修改KVM虚拟机。

● 网络爬虫。

● 抽奖器。

第7章主要讲解awk编程语言,我们可以通过awk在脚本中实现更加灵活的数据过滤功能,可以通过awk进行数据统计工作,使用awk编写网络爬虫脚本。

主要内容包括:

● awk基本语法格式。

● 监控主机网络连接状态。

● 性能监控脚本。

● 数据库监控脚本。

● 网络爬虫。

排版说明

关于本书中的排版,对于需要读者输入的命令,书中将使用等比例黑体加粗显示;对于计算机命令的返回结果,书中将使用等比例斜体字显示。当需要在文件中编写脚本时,对于打开及修改文本文件中的内容,书中会把文件中的内容放置于方框中排版和书写;对于需要读者注意的地方,书中会给出明确的注意提示。

本书读者

本书可以作为学习Shell编程的一本指南,主要针对具有Linux相关经验的从业人员,本书可以指导我们编写工作中需要的自动化运维脚本。另外,本书可以作为计算机培训参考教材。

关于配置文件及代码

本书部分主要的配置文件及代码可以在GitHub下载,地址为:https://github.com/jacobproject/shell_scripts

勘误

作者在编写本书的过程中已经花了大量的时间对内容进行审核与校验,但因为时间紧迫、精力有限,书中难免出现一些错漏,敬请广大专家和读者批评、指正。

关于本书,您有任何意见或建议,都可以发送邮件至ydh0011@163.com或使用博客平台https://blog.51cto.com/manual与我交流。

致谢

由于本书是我利用业余时间编写的,占用了大量本应该和家人在一起的欢乐时光,在此感谢家人对我的支持与勉励,感谢我的儿子(子墨)和女儿(紫悦)给家庭带来的无限欢乐。感谢我所有的同事对此项任务的全力配合与支持。感谢我的学生对本书的期待,是他们的无形支持促成了我编写本书。感谢生活中所有给予我帮助的朋友,是他们的支持让我不断地进步与创新,不管是工作中还是生活中,好朋友都是我成功的坚实后盾。感谢电子工业出版社的董英编辑为本书的出版提供的大力支持。感谢赵瑞杰为本书的修订提供的建议。

丁明一·北京

读者服务

微信扫码回复:36741

● 获取本书配套素材

● 获取更多技术专家分享视频与学习资源

● 加入读者交流群,与更多读者互动