我打算编写一个面向对象的shell(基于Python)。我已经有很多想法了。但在我要实现它之前,我想通过一些现有的shell来启发我。
我基本上是面向对象的意思:
我已经读过Windows PowerShell有点像(基于.Net)。虽然我正在搜索一些现有的Linux / MacOSX shell。
当然也有IPython,但它并不是真的打算作为Unix shell,即管道周围的东西非常复杂。
答案 0 :(得分:2)
微软的Powershell。默认安装在Windows 7& Server 2008,可以安装在XP& Vista系统。这是一个非常好的工具,热身有点长,但一旦完成它就非常有用。
我真正喜欢的功能是过滤:
ls | where-object { $_.size -eq 0 }
谁可以用紧凑的形式重写
ls | ? { $_.size -eq 0 }
和转换(后面是紧凑的形式):
ls | foreach-object { $_.name -replace "\folderName","daba" }
ls | % { $_.name -replace "\folderName","daba" }
你也可以在shell语言中轻松创建管道过滤器,这是一个非常简洁的功能。
function concat()
{
Begin { $rez = ""; }
Process { $rez = $rez + $_ }
End { $rez }
}
ls | % { $_.name } | concat
最后一个表达式列出所有文件,提取文件名并将它们连接在一个字符串中(可能是一些cmdlet,但我不记得名字)。
powershell的另一个重要部分是内省,你可以从命令行查询你的对象proprety / methods:
ls | get-member
使用新对象非常有用,它比python中的dir()
更具描述性
答案 1 :(得分:0)
也许你可能想看看Pash。
它是PowerShell的开源实现,适用于其他平台。出于教育目的和灵感,它可能是有用的。不幸的是,据我所知,这个有希望的项目尚未开发。
答案 2 :(得分:0)
根据shell comparison list on Wikipedia,唯一能够做到这一点的现有shell是MS PowerShell和IPython(如果算作命令shell),IPipe extension用于管道。
如果您只计算真正的跨平台解决方案,则无法使用MS PowerShell。它有Pash端口(感谢Roman注意到它),虽然它不完整,因此不太可用。
所以,回答我的问题:还没有这样的事情。