bash组织成树型数据结构

  1. 云栖社区>
  2. 博客>
  3. 正文

bash组织成树型数据结构

科技小能手 2017-11-12 15:24:00 浏览892
展开阅读全文
君子性非异也,善假于物也!bash亦如此。
昨晚今早的世界杯甚是精彩,深夜醒来就不断看手机直播,早上起来水没喝一口就开始欣赏英格兰和意大利 的对决,太TM精彩,最终孕育罗马文化,埃特鲁里亚文化的意大利获取胜利,我甚是欢喜,紧接着观摩下一场比赛,本田圭佑的进球甚是鬼斧神工,本来想加班 的,却研究起了复杂六度分割网络,有点乱,但是还是在下午的时候悟出了一点什么。小小睡在旁,心里想着怎么把bash组织成一棵树,因为我实在不想也没有 能力使用Python来创建所谓的高级的数据结构,比如树。
       树,一个人类的常规组织形式,一个将近一万年为人类所用的数据类型,如今被映射进计算机数据结构的时候被赋予了独特的地位,二叉树,堆,AVL树,红黑 树,256叉树,Radix树,...不一而足,几乎所有的编程语言都内置了这些树的数据结构类型,即便不是如此,也会有很多狂热的开发人员组建一系列的 所谓库来实现这些树的接口。但是除了一种语言,即Shell,对于LInux而言就是bash(我从来不用其它的shell,虽然历史渊源深厚,但历史不 是现实,这是理解历史的好处...),为什么没有人开发Linux的树型数据结构呢?...shell是一种粘合语言,不是一种实现逻辑的语言,这也许就 是根本??如果世界杯解说员在解说西班牙VS荷兰对决的时候,在荷兰进球前一直倾向于西班牙会赢,无异于低水平的***,实际上当我说没有人实现bash版 本的树型数据结构的时候,造就有人发在了github上了,只是我这个傻BI没有找到而已,所以我不再按照长平之战的原则来评论此事,我只是试着去做,因 为如果我做不到,将是我工作的重大失职,就如同西班牙球员将球送进自己的球门一样...bash为何没有简单的办法实现树型结构,甚至没有实现任何的数据 结构,原因在于,它不需要!
       君子善假于物也,bash本身没有tree的语义,但是UNIX的文件系统正是tree组织的,而bash操作UNIX目录/文件简直就是如鱼得水,我突 然想到了Linux内核的make menuconfig是怎么找到那么多的config的,事实上不需要一个统一的congifg,只需要各个文件目录自己构建自己的config项就可以 了,make的时候自然会遍历文件系统,然后取出config项目,仅此而已,Linux的诸如make menuconfig命令不需要自己实现一套遍历目录的算法。如果我想实现一个树型的操作序列,比如在ECC算法下的TLS分别用SM1和SM4来进行对 称加密,使用ECC或者SM2进行认证(即所谓的算法套间,cipher-suit),怎么办?按照传统的编程语言,我要内建一个struct,实现一个 树,但是,但是现代的复杂问题已经不允许你去编写和编译所谓的结构体了(关键在于编译),问题的根本在于你是在想用这些语言解决你的问题(去年我..一个 表,我过不去的坎)还是你想研究编程语言本身,如果是后者,请略过此文,但如果不是,我觉得C/C++/Java已经不适合 了,Python,Perl,Bash更合适,因为这些语言可以让你不必去思想如何构建一棵树的问题,以Python为例,不必多说,我懂得没你多,但是 以bash为例呢?由于没有什么库可以使用,你瞬间呆住了!...我一直以来也是这样考虑的,,但突然,我不这么认为了,我觉得bash能够利用的库 (Library)不是没有,而是很多,多到什么程度?答案是整个系统!
       Linux的目录系统是一个树型结构,bash可以很好的利用它!bash虽然没有内建任何结构,但是却可以利用所有的其它结构。Linux内核的设计者 已经想到了这一点,看一下sysfs和procfs吧,当你使用cat/echo等命令来操作的时候,是不是觉得比自己写代码更轻松些呢(虽然少了自己炫 技巧的机会...)?不要把文件系统当作一个龌龊的IPC机制,实际上你可以变通,你可以将内存的好几G,比如1G全部构建一个ramfs,然后在里面尽 情搞文件操作吧,不会有任何性能损失,记住,文件IO只是一个接口而已(请别跟我扯系统调用会影响效率,也许可以使用mmap...书看多了,课上傻 了...)!文件接口是一个非常猛的东西,它可以内建你无法实现的数据结构,比如树。我没有必在脚本内部维护一棵树,我只需要建立一个树型的文件目录系统 即可,然后利用丰富的文件系统IO命令来蹂躏它,如果你不想让我的额外文件系统污染你那纯洁的文件系统,我就建立一个ramfs,我只是将内存格式化了而 已!
       bash不是编程语言,然而它又是所有的编程语言,它可以粘合所有的语言写成的逻辑,其内恰性远远超过诸如Python,Perl,PHP之类的语言,它 是UNIX内建的!bash,它实际上就是UNIX本身的编程语言,UNIX本身就是一个库!我不是反对现代软件工程,我只是觉得在某些领域,某些地方, 某些日常事务,软件工程确实走偏了方向。
       大师出手的时候不知道自己用的招数的名字,我在想,那些所谓精通设计模式的人们,你们可曾知道,你们比设计模式领域的大师更猛,因为当这些大师在做一个系 统的时候,实在不知道自己在使用什么模式,但是你可能更知道。突然想到了《依天屠龙记》中张三丰问张无忌,直到张无忌的功夫口诀全部忘记之后,才允许其出 战,精髓所在!

      花式足球竞赛进行中,高手都是一帮跳街舞的人,技术太TMD炫了,但在世界杯中除了C罗几乎没有人炫花式技巧,于是我曾经想,花式足球不实用,只适合表 演,可是看了世界杯大牌明星这些人的花式足球表演后,我知道了,有些技巧只适合炫技,但是精髓并不包含在所谓的能炫的技巧中。


 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1426729


网友评论

登录后评论
0/500
评论
科技小能手
+ 关注