1.2 学好Shell编程所需的基础知识
本节首先来探讨一下在学习Shell编程之前需要掌握的基础知识,需要说明的是,并不是必须具备这些基础知识才可以学习Shell编程,而是,如果具备了这些基础知识,那么就可以把Shell编程学得更好,领悟得更深。如果只是想简单地了解Shell脚本语言,那么就无须掌握太多的系统基础知识,只需要会一些简单的命令行操作即可。
学好Shell编程并通过Shell脚本轻松地实现自动化管理企业生产系统的必备基础如下:
1)能够熟练使用vim编辑器,熟悉SSH终端及“.vimrc”等的配置。
在Linux下开发Shell脚本最常使用的编辑器是vim,因此如果能够熟练使用并配置好vim的各种高级功能设置,就可以让开发Shell脚本达到事半功倍的效果。这部分内容在本书的第16章有相应的讲解,读者在开始编写脚本之前可以考虑先看看第16章并搭建出高效的Shell开发环境。
说明:在本书的第16章讲解Shell脚本开发环境的配置调整和优化时,提到了高效搭建Shell开发环境的方法,之所以把这部分内容安排在第16章,是希望读者能体验一下比较原始的Shell开发过程,然后再来掌握搭建高效的开发环境的方法,老男孩从教学的角度认为这是一个比较好的过程,读者可以根据自身的情况来决定要不要提前学习第16章,搭建好高效的Shell开发环境。
2)要有一定的Linux命令基础,至少需要掌握80个以上Linux常用命令,并能够熟练使用它们(Linux系统的常用命令请参见本书的附录)。
和其他的开发语言(例如Python)不同,Shell脚本语言很少有可以直接使用的外部函数库,老男孩就将Linux系统的命令看作Shell的函数库,因此,对Linux系统常用命令的掌握程度就直接决定了运维人员对Shell脚本编程的掌握高度。一些Shell类图书在开篇花费大量章节来讲解Linux基础命令也许就是因为这点,本书主要侧重于Shell编程企业案例实战讲解,因此不会进行大且全的介绍,也不会过多地讲解Linux的常用命令,而是采用小而美的实战策略,本书结尾会以附录的形式给出常用的Linux基础命令的相关知识。此外,如果读者想学习Linux基础命令,可以关注老男孩即将出版的新书——《跟老男孩学习Linux运维:常用命令实战》,或者其他相关图书。
3)要熟练掌握Linux正则表达式及三剑客命令(grep、sed、awk)。
Linux正则表达式及三剑客命令(grep、sed、awk)是Linux系统里所有命令中最核心的3个命令,每个命令加上正则表达式的知识后,功能都会变得异常强大。如果能够掌握它们,就可以在编写Shell脚本时轻松很多。如读者想学习这部分知识,可以关注老男孩即将出版的新书——《跟老男孩学习Linux运维:三剑客命令实战》,或者其他相关图书。
4)熟悉常见的Linux网络服务部署、优化、日志分析及排错。
学习Shell编程最直接的目的就是在工作中对系统及服务等进行自动化管理,因此,如果不熟悉工作中的网络服务,就会很难使用Shell编程处理这些服务;如果不掌握网络服务等知识,就会让Shell开发者的能力大打折扣,甚至学习到的仅仅是Shell的语法及简单的基础,那么想要学好Shell编程的想法也就落空了。需要掌握的基础网络服务包括但不限于:Crond、Rsync、Inotify、Nginx、PHP、MySQL、Keepalived、Memcached、Redis、NFS、Iptables、SVN、Git,老男孩IT教育的老师在教学的过程中也是先讲解Linux常用命令和系统网络服务,然后再讲解Shell编程,目的就是不要让学员仅仅掌握Shell的语法皮毛,而是让他们能在学完Shell编程之后,自动搭建中型集群架构等,有关基础网络服务的知识可以参考机械工业出版社的《跟老男孩学习Linux运维:Web集群实战》一书,或者其他相关图书。