linux shell 高级,Linux Shell高级编程精讲

课程目标

1、掌握Shell编程基础,并激发学习兴趣。

2、掌握Shell高级使用方法的要点,解决在实际工作中遇到的问题。

3、在熟练掌握Shell编写模型和编程思路后,可形成快速直译代码的能力。

4、根据所学知识为学习其他语言打下一定基础。

适用人群

1、Linux系统管理员

2、Linux平台运维工程师

3、对Linux系统管理感兴趣的开发人员

4、即将走向IT/互联网/计算机行业的同学们

课程概述

Shell编码能力是检验Linux运维工程师的一把标尺。随着x86分布式的演化,在海量节点的场景下,Shell依旧是Linux运维不可或缺的编程语言工具。用好Shell语言,会大幅提升你的工作效率。从某种程度上讲,写代码是运维的一个分水岭。因为应用场景具有多样性,现成的工具并不总是能够满足我们的需求。所以,会写代码意味着你拥有创造能力。而不懂编程的人遇到问题时,却只能望洋兴叹。

2018年5月,我出版了《IT基础架构——系统运维实践》这部书,书中也涉及到了Shell编程的一些核心知识。这次,我希望能结合书中的核心部分,并丰富一些内容,将其作为一部独立完整的Shell教程分享给大家。

有人说Shell落后了,其实不然。语言是没有优劣之分的,编程的核心在于——如何对事务处理流程的逻辑进行合理地编排调度。不论是实现什么需求,编程就是在描述你是如何做这件事情的,你只不过是把你的做事方法传授给机器徒弟而已。想要写出一个好程序,就像要带出一个好徒弟一样。作为师父,首先你要有清晰的业务逻辑,知道这件事应当怎么做,其次才是向徒弟描述做事的步骤(即代码工作)。

我用Shell做开发也有七、八年的时间了,它有很多优点,比如学习成本低,建模迅速、工具丰富等等。我喜欢它的直观简洁,喜欢它的高度集成,更喜欢用Shell去不断地发起挑战,在攻克一个个难题后,所带来的那种成就感。和《IT基础架构——系统运维实践》这部书一样,我将自己多年累积的实践经验毫无保留地呈现给喜爱它的学员,这是一堂有一说一、脚踏实地的教学。它秉承了我一贯的作教学风:

1、解决三个问题:What(是什么?)How(怎么用?)Where(在哪儿用?)

2、 两种教学方法:举例子、打比方

3、三个授课原则:授人以渔、深入浅出、落地实用

4、三个学成目标:理解概念、掌握方法、融入场景

课程中融合很多有趣的实例,很多是我在实际工作中遇到的问题。例如

1、我是如何动态跟踪并清晰地格式化输出内存的剩余空间的?

2、我是如何去判断一个IP是否合法的?

3、我是如何汇总IO延迟故障的时间点的?

4、我是如何完成字符串大小写转换和数字的最值求取的?

5、我是如何让程序的参数输入标准化的?

6、我又是怎么把程序的执行过程打印到后台日志的?

正如我前面所提到的,每攻克一个难题,不仅是GET到了一个新的技能,更是在这个过程中获得了无限的成就感和快乐。如果你喜欢Linux系统管理并热爱这项事业的话,请和我们一起加入探索Shell编程的旅行吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shell脚本高级编程教程,希望对你有所帮助。 Example 10-23. Using continue N in an actual task: 1 # Albert Reiner gives an example of how to use "continue N": 2 # --------------------------------------------------------- 3 4 # Suppose I have a large number of jobs that need to be run, with 5 #+ any data that is to be treated in files of a given name pattern in a 6 #+ directory. There are several machines that access this directory, and 7 #+ I want to distribute the work over these different boxen. Then I 8 #+ usually nohup something like the following on every box: 9 10 while true 11 do 12 for n in .iso.* 13 do 14 [ "$n" = ".iso.opts" ] && continue 15 beta=${n#.iso.} 16 [ -r .Iso.$beta ] && continue 17 [ -r .lock.$beta ] && sleep 10 && continue 18 lockfile -r0 .lock.$beta || continue 19 echo -n "$beta: " `date` 20 run-isotherm $beta 21 date 22 ls -alF .Iso.$beta 23 [ -r .Iso.$beta ] && rm -f .lock.$beta 24 continue 2 25 done 26 break 27 done 28 29 # The details, in particular the sleep N, are particular to my 30 #+ application, but the general pattern is: 31 32 while true 33 do 34 for job in {pattern} 35 do 36 {job already done or running} && continue 37 {mark job as running, do job, mark job as done} 38 continue 2 39 done 40 break # Or something like `sleep 600' to avoid termination. 41 done 42 43 # This way the script will stop only when there are no more jobs to do 44 #+ (including jobs that were added during runtime). Through the use 45 #+ of appropriate lockfiles it can be run on several machines 46 #+ concurrently without duplication of calculations [which run a couple 47 #+ of hours in my case, so I really want to avoid this]. Also, as search 48 #+ always starts again from the beginning, one can encode priorities in 49 #+ the file names. Of course, one could also do this without `continue 2', 50 #+ but then one would have to actually check whether or not some job 51 #+ was done (so that we should immediately look for the next job) or not 52 #+ (in which case we terminate or sleep for a long time before checking 53 #+ for a new job).
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值