[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学习实战总结。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,875评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,569评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,475评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,459评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,537评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,563评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,580评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,326评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,773评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,086评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,252评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,921评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,566评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,190评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,435评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,129评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,125评论 2 352

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,380评论 0 5
  • 一,shell题记 不懂shell的程序员不是好程序员,学习shell是为了自动化,使用自动化可以非常有效的提高工...
    架构师小秘圈阅读 8,724评论 3 70
  • 什么是Shell脚本 示例 看个例子吧: 示例解释 第1行:指定脚本解释器,这里是用/bin/sh做解释器的 第2...
    guanguans阅读 1,512评论 2 46
  • 一、什么是Shell脚本 示例 看个例子吧: 示例解释 第1行:指定脚本解释器,这里是用/bin/sh做解释器的 ...
    Rick617阅读 781评论 0 1
  • 命运的反复无常,让我措手不及,还好有众多的有爱的朋友伸出纷纷伸出爱的援手陪伴我度过艰难岁月。感恩所有人的付出!我才...
    阳光坤哥阅读 4,295评论 6 3