MSH: Command Line Shell for Windows
얼마전 부터 가끔 얘기가 들려오던 마이크로소프트의 새로운 command line shell인 MSH (일명 Monad)에 대한 Udell의 인포워드 기사과 좀 더 자세한 내용을 담고 있는 블로그. Command line 옵션에 “-” 대신 “/“를 쓰느라 디렉토리 구분을 “/“대신 “\” (back slash)로 하는 것만 보면 마이크로소프트라면 유닉스와는 항상 반대로 가는 것 같지만, 사실 마이크로 소프트 내에서도 개발자들은 유닉스에 관심이 많은 것 같다. 하긴 한동안 XENIX라는 일종의 UNIX를 팔기도 했었고, 지금도 윈도우스를 위한 유닉스 애드온 패키지를 팔고 있기도 하고, 롱혼을 데모하는데 emacs를 당당히 사용하기도 하는 걸 보면, 많이 드러내진 않아도 유닉스의 장점은 수용하겠다는 자세인 것 같다. System-wide의 컴포넌트 모델을 갖고 있는 .NET의 command line이라면 기존 유닉스의 텍스트 대신 오브젝트와 XML을 기본 데이터 형식으로 사용하고 프로세스 대신 역시 오브젝트가 데이터 처리 단위가 되는 것도 당연할 것이다. 따라서 기본적인 코맨드의 출력을

텍스트 파싱이 아닌 오브젝트의 property에 의해 필터링한다던가 소팅하는 것이 쉽게 되고

마이크로 소프트의 command line인만큼 엑셀로 데이터를 바꾸는 것도 기본 명령으로 제공된다.

개인적으론 Perl이나 기존 쉘 같은 문법보단 좀 더 Python스러웠으면 더 좋았겠지만, 아뭏튼 마이크로소프트에서 이 정도로 강력한 command line shell을 제공한다는 것 만으로도 충분히 기대가 된다. MSH에선 .NET CLR의 모든 기능이나 기존 COM의 모든 기능을 바로 사용할 수 있을 것으로 기대되므로 잘만 활용하면 기존 유닉스의 쉘보다 훨씬 강력하고 편리할 것 같다. 예전에 회사에서 Java 기반의 서버를 만들 때, Jython 인터프리터의 shell interface 부분에 간단한 텔넷 데몬을 추가해서 서버 속에 별도 쓰레드로 넣은 적이 있었다. 이렇게 되면 텔넷 (사실은 보안문제 때문에 localhost에서만 접속하도록 하고 localhost까지는 ssh로 접속) 만으로 현재 동작하고 있는 Java 프로세스에 접속, 모든 내부의 오브젝트 상태를 보거나 바꿀 수 있으므로 서버에 예상하지 않은 문제가 생겼거나 재기동하지 않으면서 어떤 조작을 해야할 경우에 유용하다. Java이건 .NET이건 또는 XML이건, 런타임에 혹은 데이터 자체에 메타 데이터를 함께 갖고 있음으로 해서 얻게 되는 이득이 이로 인해 더 사용해야 하는 메모리 코스트보다 훨씬 큰 경우가 점점 많아지고 있다. P.S. 이글루스는 줄바꿈을 무조건
태그로 바꾸기 때문에
태그를 써서 프로그램 소스나 command line screen capture를 나타내기가 어렵다. 관리자님, 제로보드처럼 옵션으로 해주세요.