2010-07-19 3 views
2

파이썬 기반의 객체 지향 쉘을 작성하려고합니다. 이미 많은 아이디어가 있습니다. 하지만 구현하기 전에 기존 쉘에서 영감을 얻고 싶습니다. 나는 기본적으로 무엇을 의미개체 기반 셸은 무엇입니까?

객체 지향 :

  • 매개 변수는 단지 문자열 배열하지만 객체의 배열이 아니다.
  • 반환 값은 객체이기도합니다.
  • stdin, stdout 및 stderr뿐만 아니라 특정 유형 (바이트 스트림이 아님) 일 수있는 가능한 모든 수의 명명 된 스트림이 있습니다.

Windows PowerShell이 ​​(.Net 기반)과 다소 비슷하다는 것을 읽었습니다. 비록 내가 기존의 Linux/MacOSX 쉘을 찾고있다.

물론 IPython도 있지만 실제로는 유닉스 쉘로 의도하지는 않습니다. 즉, 파이핑하는 것은 꽤 복잡합니다.

+1

그런 것은 없습니다. powershell은 유일한 진정한 객체 기반 쉘 afaik입니다. 천국 금지 : 마이크로 소프트 혁신! – x0n

+0

이것이 더 이상 진행되지 않았습니까? 또한 관리 및 쉘 스크립팅을 크게 단순화한다고 생각하면서 적절한 객체 지향 쉘을 작성하려고 생각했습니다. – user2294382

+0

파일 이름에 공백이 있기 때문에 for 루프가 엉망이되어 버렸습니다. 나는 둥근 방법이 있다는 것을 압니다. 그러나 그것은 고통입니다. 우리가 파워 쉘을 따라 잡을 때입니다! –

답변

0

아마도 Pash을보고 싶을 것입니다.

다른 플랫폼 용 PowerShell의 오픈 소스 구현입니다. 교육 목적과 영감을 얻으려면 유용 할 것입니다. 불행히도, 내가 볼 수있는 한,이 유망한 프로젝트는 개발되지 않고 있습니다.

+0

[MOSA] (http://mosa-project.org/projects/mosa)에서 다시 시도 할 계획이 있습니다. Pash가 기본 셸이되도록하려는 것입니다. 하지만 아직까지는 시간이 걸릴 수 있습니다. – Joey

2

마이크로 소프트의 Powershell. Windows 7에 기본적으로 설치되는 & Server 2008은 XP & Vista에 설치할 수 있습니다. 그것은 워밍업하기에 약간 긴, 정말 좋은 도구입니다.하지만 일단 끝나면 정말 유용합니다. 컴팩트 한 형태

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

및 변환에 다시 작성할 수 있습니다

ls | where-object { $_.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 

마지막 표현 목록의 모든 파일, 파일 이름을 추출하여 하나의 문자열을 연결하여 (그렇게 할 몇 가지 cmdlet을 할 수 있지만 내가 이름을 기억하지 않습니다). dir()보다

ls | get-member 

새로운 개체를 재생 정말 유용, 그건 좀 더 설명 : 명령 줄에서

파워 쉘의 또 다른 중요한 부분은 반성, 당신은 쿼리 수있는 객체을 속성은/방법 파이썬에서

+0

Windows가 없습니다. 나는 비 Windows 쉘을 찾고있다. – Albert

+0

@Albert :'ksh'는 적어도 직렬화 된 객체를 허용하지만, 어떻게 작동하는지 전혀 모른다. 또한 PowerShell 언어의 영감으로 인용되기도합니다. – Joey

+0

멋진 위시리스트가 있지만 질문에 대한 대답이 아닙니다. –

0

shell comparison list on Wikipedia에 따르면 파이썬을 위해 IPipe extension과 함께 MS PowerShell과 IPython (명령 셸로 간주되는 경우) 만 가능합니다.

실제 크로스 플랫폼 솔루션 만 계산하는 경우 MS PowerShell을 사용할 수 없습니다. 그것의 Pash 포트가 있습니다 (고마워하는 Roman). 그러나 불완전하기 때문에 실제로 쓸모가 없습니다.

내 질문에 대답하기 위해 : 아직 그런 것은 없습니다.

관련 문제