Shell脚本编程诀窍

出版时间:2012-9  出版社:清华大学出版社  作者:帕克  页数:534  字数:840000  译者:万千  
Tag标签:无  

内容概要

《Shell脚本编程诀窍--适用于Linux\Bash等》介绍shell脚本编程,主要针对Bourne
shell与POSIX兼容的shell,但也广泛涵盖了新近的一些发展情况,尤其是bash shell。bash
shell几乎总是会包含在GNU/Linux操作系统中,也包含在了大多数商业Unix中。另外,KornShell也被广泛用于大部分这样的闭源或开源操作系统中。
Steve Parker的《Shell脚本编程诀窍--适用于Linux\Bash等》分为4
个部分。第Ⅰ部分介绍shell的基本功能和语法;第Ⅱ部分介绍shell脚本可以使用的工具;第Ⅲ部分给出了一些涵盖更广泛话题的实用脚本;第Ⅳ
部分是参考信息。

作者简介

作者:(英国)帕克(Steve Parker) 译者:万千  Steve Parker,是具有20年Unix经验与15年GNU/Linux经验的Unix与Linux顾问。他编写了在线shell脚本编程教程并对其进行维护。Steve提供IT咨询服务,还提供shell脚本编程与Unix、Linux技术的培训课程。

书籍目录

第1部分  基本概念
第1章 Unix、GNU和Linux的历史
1.1 1 Jnix
1.1.1 “一切皆文件”与管道
1.1.2 BSD
1.2 GNU
1.3 Linux
1.4 本章小结

章节摘录

版权页:   插图:   17.1.3潜在的陷阱 正确地进行碰撞检测会有些困难,尤其是外星人宽度大于一个单元格的时候。让屏幕保持干净也需要谨慎进行。对屏幕进行太多刷新会毁掉游戏,因为会导致过度闪烁。相对而言,调用clear命令会花较长时间,并且使屏幕非常闪烁。 编写代码时,该脚本的最显著的改变在于for循环中模功能从函数调用转移为外部expr命令。这意味着对每个外星人(无论死活)调用expr,然后替换为内嵌的((…%2))结构。从expr到内嵌方法的修改意味着可以改变外星人的形状。不修改的话,执行会非常缓慢。将模值从for循环中取出也会效率更高一些,但不会特别明显。 17.1.4脚本结构 脚本的开头与结尾是tput命令。它可以使光标在游戏开始前消失(tput cinvis),然后在退出后又出现(tput cvvis)。另一个较小的修改是在游戏结束时取消SIGALRM上的trap,这样move函数在脚本结束后就不会发送SIGALRM信号。这些只是小细节,但可以对效果有相当大的改观。否则,如果没有它们,效果会差很多。 该脚本由4个关键函数与一个主循环构成。从脚本的底部往上,主循环只从键盘读取一个字符(read—n 1)。如果是“左”或“右”指令(分别为a和1),则循环更新飞船的位置。飞船将立刻被重新绘制。如果按下的是开火按钮(f),且激光炮不处于使用状态(cannonY—eq0),则cannonX变量相对于飞船当前的x轴坐标进行赋值,cannonY被赋值为飞船的Y轴坐标(固定在屏幕的底部)。 只要按键移动了飞船,主循环就调用drawship。该函数用printf语句清空屏幕的整个底行,并将飞船中的激光炮用彩色显示,用以表示是否装配了火炮。这与move函数是独立的,并且能实时地更新飞船的移动,且与单调缓慢的外星飞船的更新不同。drawship也在move函数中调用,这样即使在飞船没有移动的情况下,火炮的更新也能正常反映出来。 主循环的开头是move函数。move函数使用SIGALRM在$DELAY秒之后调用自身。DELAY会随着时间推移越来越小,所以外星人下降的速度越来越快。每次调用move时,外星人在它们的前进方向上移动一格。当它们到达屏幕的边界时,就翻转direction变量使它们向相反的方向运动。外星人在每次抵达屏幕的右边时都会向下移动一行f通过增加ceilin9变量)。 move随后对每行外星人调用一次drawrow函数。因为bash没有多维数组,所以外星人的行数被硬编码到脚本中。使用循环来遍历所有行是一个不错的选择,就算有6行外星人,6次调用drawrow函数也不会显得太笨拙。在显示过程中,drawrow返回碰到炮弹的所有外星人的索引号,如果当前行中没有外星人被击中则返回0。这样对数组的结构产生了一些额外的效果。数组从0开始索引,但因为0在drawrow函数的返回码中具有特殊意义,所以保存外星人分值的数组row0到row5不使用0号索引。这或许有些拙劣,但可以使每一行在调用drawrow之后进行直接赋值rowx[$?】=0。如果$?为0,则更新未使用的0号索引,对其他数组元素没有影响。如果$?大于0,则它会指向某个外星人,然后将存储其得分值的数组元素赋值为0。这样一来,随后对drawrow的调用不会在原来位置显示外星人,并且碰撞检测会允许炮弹通过该位置而不停下来。更简洁的实现方法要求对drawrow的每次调用之后都有一些更加复杂的代码。这些代码会检查返回值,并且在外星人被击中的情况下更新数组。该脚本使用的方法使得游戏在最低限度上能快速运行,并且更重要的是易于阅读与管理。

编辑推荐

《Shell脚本编程诀窍:适用于Linux、Bash等》是为了对shell进行较为全面的介绍,并且无论用户具有何种背景与经验都能从《Shell脚本编程诀窍:适用于Linux、Bash等》中得到一些收获。《Shell脚本编程诀窍:适用于Linux、Bash等》主要面向中级与高级Unix与Linux管理员,以及可能感兴趣的其他高级用户。《Shell脚本编程诀窍:适用于Linux、Bash等》假设读者至少会用一种Unix系统,并且可能已经编写了一些shell脚本,但希望提高自身脚本编写的水平。

图书封面

图书标签Tags

评论、评分、阅读与下载


    Shell脚本编程诀窍 PDF格式下载


用户评论 (总计17条)

 
 

  •   这本书属于Shell的高阶用法的总结,其中系统实用脚本很不错
  •   很好,正在学习通过shell脚本提高工作效率
  •   其中系统管理的实用脚本不错
  •   大概看了一下 大体内容不错 介绍的很详细 书中的事例讲的很不错
  •   质量都很好,就觉得有点贵
  •   挺好,但是不适合于初学者
  •   大致翻阅 了一下,感觉东西对有基础的人来说,应该都不是很难的内容。如果是想从本书中获得突破式的进展,人个感觉作用不会很大。
  •   感觉内容不是我想象的那么详细.有些精细的地方没有讲到.
  •   感觉书的设计不是太好,给人感觉是一本好陈旧的书
  •   不错,就是老外写的书,章节风格挺不习惯的
  •   原书是极好的,绝对5星,光是看第一章“基础部分”,就能搞清楚很多以前完全不了解的Shell细节。但翻译实在烂,不但不通顺,而且容易误导人,把人弄到陷阱里去。 所以看到不懂的地方,一定要不犹豫对照原文!综合打个3星吧!
  •   一本在手,别无他求。
  •   正品,小伙伴快来买啊df
  •   这本书适合有点基础的人看。
  •   有一些其他地方看不到的东西,很值得看
  •   工作中要用到shell,看了本书让我深入接触了shell的很多别的方面,很好
  •   比我预期的要好,有很多技巧性的东西原来没有接触过,对于sysadmin来说不可多得的一本参考书。
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7