这不是我想要的Shell入门,因为它没有让我感受到一丝Shell的魅力,通篇只有细节,而且讲述不清(比如对getopts里OPTARG(在bash 3.2里好像是OPTSTRING)的讲解,让我一度很困惑,这个序列存的参数到底是以词为单位呢,还是字符),缺乏比较(比如文中似乎没有关于$(()), $[], [], (())这几种表达式的明确比较)。
我对Shell的印象是学习门槛高、记忆负担重,但控制精细、灵活,至于很多人交口称赞的高效和高可定制却没有什么体会。直到我用了Vrome,一个Chrome扩展,一个让你以Vim方式操作Chrome的插件。这时我才感受到鼠标的产生是一个多大的倒退——我们到底把生命的几分之几花在了挪动鼠标上!这才是我想要的讲述方式——用一个能让我为之悸动的理由来说服我使用Shell。虽然我不想再像被C++那样忽悠(那玩意简直就是屠龙技),可我喜欢那种高谈设计理念的调调。Shell就有很多这样的资本,比如:专注做好一个小工具,让它们互联起来,控制每一个细节……
我的理解,bash应该不难学啊(虽然它是和gcc一个数量级的软件),它不过是个执行其他程序的入口罢了,提供了一些流程控制的语法和控制数据流转的机制(管道)。我期望的语法书能告诉我bash之所以这样设计背后的考虑,或是历史的妥协(比如vi选用h, j, k, l作←↓↑→是因为Bill Joy用的键盘上有这么几个箭头);它能告诉我bash凌乱的语法背后的统一;它能告诉我是什么导致了bash采用这种种怪异的用法(虽然《7.3节 命令分析与执行》谈到一些,但仅限于这一节,没有把这一工具用在其它章节上)……
可能是英文的原因,让它看起来不够亲切,但bash混乱、丑陋的形象已经在我脑海中根深蒂固了。我宁愿多敲几个字用Ruby或是Python来执行系统命令。于我而言,唯一的收获就是验证了Perl中的确有很多shell的影子。应该说还有,Ruby真的不是漂亮了一点半点。
P.S. 我只读了前七章。