2010-07-19 2 views
2

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

То, что я в основном имею в виду объектно-ориентированный:

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

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

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

+1

нет такой предмет. powershell - единственная истинно объектная оболочка afaik. Небеса запрещают: microsoft инновации! – x0n

+0

Разве это когда-нибудь было? Я также думал о написании подходящей объектно-ориентированной оболочки, поскольку я считаю, что это значительно упрощает управление и сценарии оболочки. – user2294382

+0

Мне надоели мои петли, падающие на их задницу из-за пробелов в именах файлов. Я знаю, что есть способы обойти это, но это боль. Пришло время, когда мы догнали Powerhell! –

ответ

0

Возможно, вы можете взглянуть на Pash.

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

+0

Планируется оживить его в [MOSA] (http://mosa-project.org/projects/mosa); они предполагают, что Pash будет оболочкой по умолчанию. Но это может занять некоторое время. – Joey

2

Microsoft Powershell. Устанавливается по умолчанию в Windows 7 & Сервер 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" } 

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

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


ls | % { $_.name } | concat 

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

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

ls | get-member 

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

+0

У меня нет Windows. Я ищу некоторую оболочку, отличную от Windows. – Albert

+0

@Albert: 'ksh' хотя бы разрешил сериализованные объекты, но я не знаю, как это работает. Он также упоминается как вдохновение для языка PowerShell. – Joey

+0

в то время как приятный список желаний, это не ответ на вопрос –

0

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

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

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

Смежные вопросы