现实即魔法
起因是想学着在单板上编译内核和安装驱动,接触了gcc和makefile,然后觉得最好是重新学学shell怎么用,接着就开始看《bash cookbook》 和《advanced bash scripting guid》,具体工具大致翻翻,主要是想更系统地了解bash语法。
bash发布于89年,在那个百家争鸣的时代,哪个脚本语言不是write once,run everywhere?而shell更不只是又一种胶水语言,它就是胶水本身,它还是空间结构。通过管道、重定向、参数扩展等连接方法,让一个个简单专一小程序在其中开放自由地玩marble run,连awk、sed都乐不思蜀,甘愿充当工具人,忘记它俩本就是一门语言。
也由于shell独特的连接方式,程序和函数可以打印返回值,而真正的返回值则用来指示退出状态。
shell像是走出象牙塔的LISP,脱下层层括号,拥抱参差多态的现实,语法似乎没有很强的规律可总结,只好用各种例子阐释。用花括号和分号写诗,还是用do-done记菜谱,看你心情。
shell褪去了perl的嬉皮中二,仍偷偷保留着黑魔法,只是微妙得恰到好处,用一个个小标点就解决了其他语言要争论了好几年才愿意谨慎加入的特性。像是个参透了禅与机修艺术的老塞用一棵螺丝就解决了重大设备问题,但他并不张扬,直到若干年后一个年轻人可能为了整洁美观拿走了那颗螺丝而导致系统异常,只好花几十万更新设备。再后来年轻人当上了领导,在设备维护手册上又添加了一条,声称 there's preferably only one way to do it,大家要按照规范执行
规范易读的代码是大规模协作的要求,但社会化分工与协作也是人被异化成了工具和被编程的对象,劳动的创造性被重复性取代的开端。但在bash这里,可读性与自由度,机械与魔法之间没有矛盾