какие объектные оболочки существуют? - PullRequest
2 голосов
/ 19 июля 2010

Я планирую написать объектно-ориентированную оболочку (на основе Python).У меня уже есть много идей.Но прежде чем я собираюсь реализовать его, я хочу вдохновить меня существующей оболочкой.

Что я в основном имею в виду под объектно-ориентированным:

  • Параметры - это не просто массивстроки, но массив объектов.
  • Возвращаемое значение также является объектом.
  • Существует не только stdin, stdout и stderr, но и любое возможное количество именованных потоков, которые могут быть определенных типов (не просто поток байтов).

Я читал, что Windows PowerShell чем-то похож на это (на основе .Net).Хотя я ищу некоторые существующие оболочки Linux / MacOSX.

Конечно, есть и IPython, но на самом деле он не предназначен как оболочка Unix, т.е. обвязка довольно сложна.

Ответы [ 3 ]

2 голосов
/ 19 июля 2010

Microsoft's 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" }

вы также можете легко создать конвейерный фильтр в языке оболочки, который являетсядовольно изящная особенность.

function concat()
{
    Begin { $rez = ""; }
    Process { $rez = $rez + $_ }
    End { $rez }
}


ls | % { $_.name } | concat

Последнее выражение перечисляет все файлы, извлекает имя файла и объединяет их в одну строку (это может быть какой-то командлет, но имя я не помню).

Другая важная часть PowerShell, это самоанализ, вы можете запросить свойства / методы вашего объекта из командной строки:

ls | get-member

Действительно полезно играть с новыми объектами, это немного большеописательный, чем dir() от Python

0 голосов
/ 19 июля 2010

Согласно списку сравнения оболочек в Википедии , единственными существующими оболочками, которые могут это делать, являются MS PowerShell и IPython (если это считается командной оболочкой) с расширением IPipe для трубопроводов.

Если вы учитываете только реальные кроссплатформенные решения, MS PowerShell использовать нельзя.Существует порт Pash (спасибо Роману, что заметил это), хотя он неполный и, следовательно, не очень полезен.

Итак, чтобы ответить на мой вопрос: такого еще нет.

0 голосов
/ 19 июля 2010

Возможно, вы захотите взглянуть на Паш .

Это реализация PowerShell с открытым исходным кодом для других платформ. Для образовательных целей и вдохновения это может быть полезно. К сожалению, насколько я вижу, этот многообещающий проект не разрабатывается.

...