首页 > 代码库 > bash组织成树型数据结构
bash组织成树型数据结构
君子性非异也,善假于物也!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罗几乎没有人炫花式技巧,于是我曾经想,花式足球不实用,只适合表演,可是看了世界杯大牌明星这些人的花式足球表演后,我知道了,有些技巧只适合炫技,但是精髓并不包含在所谓的能炫的技巧中。
昨晚今早的世界杯甚是精彩,深夜醒来就不断看手机直播,早上起来水没喝一口就开始欣赏英格兰和意大利的对决,太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罗几乎没有人炫花式技巧,于是我曾经想,花式足球不实用,只适合表演,可是看了世界杯大牌明星这些人的花式足球表演后,我知道了,有些技巧只适合炫技,但是精髓并不包含在所谓的能炫的技巧中。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。