Linux 笔记

[shell]:为什么要学习shell

2018-05-08  本文已影响56人  瑾兰

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 都属于高级编程语言,他们也可以用来做脚本编程,因为他们都用对应的执行脚本的解析器。

主要考虑以下几个原因

什么时候不适合使用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学习实战总结。

上一篇下一篇

猜你喜欢

热点阅读