[shell]:为什么要学习shell
shell:what? why?how?
编程思想
shell编程遵从UNIX哲学:把复杂问题分解成简单的小问题,然后再把各个部分功能组合起来解决复杂问题。
在学习任何一门知识,我们都需要思考清楚
Why:为什么? 即原因。
What:是什么? 即本质。
How: 如何做? 即方法。
大Why,小What,和一带而过的How。结论先行。
好了,那我们开始思考为什么要学shell,shell到底是什么,和到底如何去学shell呢!
为什么要用shell
对于我们自己,学习shell是为了自动化,而自动化则是为了提高工作效率,提高产出,更进一步则是提高公司的收入 。
Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具,Linux/UNIX系统的底层及基础应用软件的核心大都涉及Shell脚本的内容。每一个合格的Linux系统管理员或运维工程师,都需要能够熟练地编写Shell脚本语言,并能够阅读系统及各类软件附带的Shell脚本内容。只有这样才能提升运维人员的工作效率,适应日益复杂的工作环境,减少不必要的重复工作,从而为个人的职场发展奠定较好的基础。
目前Linux系统下最流行的运维自动化语言就是shell和Python了。
两者之间,shell几乎是IT企业必须使用的运维自动化编程语言,特别是在运维工作中的服务监控、业务快速部署、服务启动停止、数据备份及处理、日制分析等环节里,shell是不可缺的。当然Python也是一门更适合处理复杂的业务逻辑,以及开发复杂的运维软件工具,实现通过web访问等。Shell是一个命令解释器,解释执行用户所输入的命令和程序。一输入命令,就立即回应的交互的对话方式。
其实PHP、Python 都属于高级编程语言,他们也可以用来做脚本编程,因为他们都用对应的执行脚本的解析器。
主要考虑以下几个原因
- 环境兼容性,Win7专业版和旗舰版默认安装PowerShell,标准版和家庭版中就没有安装的,其他主流的操作系统都预制了Shell解释器,所以使用sh、bash编写,提供给其他人使用是非常方便的,但是PHP、Python 等等需要安装相应的环境
- 服务器Linux使用的是sh、bash;比如做一下自动备份,自动部署环境,服务器之间数据同步... ...对于日常反复性的处理工作避免了使用那些结构过于复杂的程序语言。
什么时候不适合使用shell
资源紧张的项目,特别是那些速度是重要因素的地方(排序,散序,等等)
程序要进行很复杂的数学计算,特别是浮点计算,任意精度的计算,或者是复数计算(应该用C++或是FORTRAN代替)
要求交叉编译平台的可移植性(使用C或者是Java代替)
需要结构化编程的复杂应用(需要变量类型检查和函数原型等等)
对于影响系统全局性的关键任务应用。
安全非常重要。你必须保证系统完整性和抵抗入侵,攻击和恶意破坏。
项目由连串的依赖的各个部分组成。
多种文件操作要求(Bash被限制成文件顺序存取,并且是以相当笨拙,效率低下的逐行的存取方式)
需要良好的多维数组支持。
需要类似链表或树这样的数据结构。
需要产生或操作图象或图形用户界面。
需要直接存取系统硬件。
需要端口号或是socket I/O。
需要使用可重用的函数库或接口。
所有的私有的不开源的应用程序(Shell脚本的源代码是直接可读,能被所有人看到的)
如果你需要有上面的任意一种应用,请考虑其他的更强大的脚本语言――Perl,Tcl,Python,Ruby,或者可能是其他更高级的编译型语言,例如C,C++或者是Java。尽管如此,使用Shell脚本来构造应用原型仍然是一个有用的开发步骤。
我们将会使用Bash,它是 "Bourne-Again shell" 的首字母缩写,并且是Setphen Bourne写的经典的Bourne shell的同义词。Bash已经变成了所有令人喜欢的UNIX上shell编程 事实的上的 这本书的大多数脚本技术能很好的应用到其他的Shell当中,比如说Korn Shell,Bash借用了它的一些特性, [2] 还有C Shell和他的不同之处。(注意:C shell编程不是交付一定的内在问题,这点已由Tom Christiansen在1993年10月在 Usenet post 被指出了)
--摘自《第一章:为什么要有Shell编程?》
什么是shell
我们都知道在计算机中,计算机只能识别ASCII,即二进制,而程序中的编程语言或者用户输入的信息等,并不是ASCII,计算机根本就不能直接读懂。所以这时候就需要一个“翻译”。shell其实就是一个“翻译”。一个命令解释器。shell是在操作系统内核与用户之间进行翻译,同时也是一种功能相当强大的编程语言。
shell必须是建立在UNIX或者Linux之上才有意义。所以在正式学习shell之前,我们需要掌握Linux或者UNIX知识。
shell脚本是什么?
shell脚本就是指令的集合。
如何来用shell
当然是把shell的基本语法熟练掌握,实战起来啦。
后续我会整理出shell学习实战总结。