代码之家  ›  专栏  ›  技术社区  ›  Albert

有哪些基于对象的shell?

  •  2
  • Albert  · 技术社区  · 14 年前

    我所说的面向对象的基本含义是:

    • 参数不仅仅是字符串数组,而是对象数组。
    • 返回值也是一个对象。

    我读到过,WindowsPowerShell有点像这样(基于.Net)。尽管我正在搜索一些现有的Linux/MacOSX shell。

    当然也有IPython,但它并不是真正的unixshell,也就是说,管道是相当复杂的。

    3 回复  |  直到 14 年前
        1
  •  0
  •   Roman Kuzmin    14 年前

    Pash

    它是针对其他平台的PowerShell的开源实现。出于教育目的和启发,它可能是有用的。不幸的是,据我所知,这个有前途的项目还没有开发出来。

        2
  •  2
  •   Raoul Supercopter    14 年前

    微软的 Powershell . 默认安装在Windows 7&上;Server 2008,可安装在XP&上;远景。这是一个非常好的工具,有点长的热身,但一旦它做了真的很有用。

    我真正喜欢的功能是过滤:

     ls | where-object { $_.size -eq 0 }
    

    谁能以简洁的形式重写

     ls | ? { $_.size -eq 0 }
    

    以及转换(紧随其后的是紧凑形式):

     ls | foreach-object { $_.name -replace "\folderName","daba" }
     ls | % { $_.name -replace "\folderName","daba" }
    

    function concat()
    {
        Begin { $rez = ""; }
        Process { $rez = $rez + $_ }
        End { $rez }
    }
    
    
    ls | % { $_.name } | concat
    

    最后一个表达式列出所有文件,提取文件名并将它们串联在一个字符串中(这可能是某个cmdlet实现的,但我不记得名称)。

    powershell的另一个重要部分是内省,您可以从命令行查询对象属性/方法:

    ls | get-member
    

    玩新东西真的很有用,它比 dir() 来自python

        3
  •  0
  •   Albert    14 年前

    根据 shell comparison list on Wikipedia ,只有MS-PowerShell和IPython(如果这算是命令shell)具有 IPipe extension

    Pash 它的港口(感谢罗马人注意到它),虽然它是不完整的,因此不是真正有用的。

    所以,回答我的问题:现在还没有这样的事情。