嗯,“至少”更确切地说——这将是完美的;-) 有类似的问题——*nix 的面向对象 shell。对我来说,与 bash 的相似性不是问题。
我想要一些简单的 OOP 加 LINQ。目前我只知道http://www.scsh.net/但因为语法有点矫枉过正。
也许我会通过例子向你展示我的意思:
run("ls ./").foreach(it => println(it.filesize))
或者
run("find -r *.jpg") \
.filter(it => it.datetime<today.adddays(-2)) \
.foreach(it => run("gimp ${it.filename}"))
还有比 scsh 更接近这个“梦想 shell”的东西吗?
我为什么要问?因为我编写的程序越多,我就越倾向于函数式语言(C++ -> C#+LINQ -> Scala -?-> Clojure),昨天我不得不在 bash 中编写简单的 find+print 循环,这很痛苦。男人很容易被所有功能性的东西宠坏;-D。
答案1
rush
看起来很相似,例如允许你写
processes.filter(:cmdline => /mongrel_rails/).kill
或者
myproj['**/*.rb'].search(/^\s*class/).lines.size
但看起来相当死的。最后,我会选择只使用一些脚本语言来执行 shell 任务(而不是相反),例如,如中所述《使用Python创建UNIX命令行工具》。
(编辑还有一个正在积极开发的面向对象的 shell,尽管与rush
s 的概念有很大不同,oh
.)
答案2
您必须为 LINQ 内容编写自己的对象,但将 bash 扩展到 OOP 非常容易。查看https://github.com/uudruid74/bashTheObjects