Slashdot Mirror


Microsoft Releases A New Monad Command Shell Beta

Watercooler Warrior writes "Slashdot originally broke the news that a new Microsoft command shell was in the works when a reader noticed a suspicious job posting by Microsoft India. Today Microsoft released the first really usable version of the shell (codenamed Monad) to beta testers - and anyone who carefully reads the WinHEC slides about Monad will find how to join the beta and get a peek at it. The shell looks like a bunch of old-school Unix and Perl hackers were given free rein to do what they wanted with the .NET framework, and from what is known about the backgrounds of the Monad developers this is probably pretty close to the truth."

2 of 126 comments (clear)

  1. I've been using an older version.... by Prien715 · · Score: 4, Interesting

    And I can't say I'm that impressed yet. I'd like to see man pages or something actually implemented. man currently does stuff but man doesn't work for any command I've tried (thus there don't seem to be *any* options). There's a lot of aliases built-in to emulate Unix (e.g. ls, ps) but the lack of grep makes piping seem...well pointless. The actual versions of commands seem entirely too object oriented and thus too verbose. "get-directory" is not something I want to type (I can't remember off the top of my head, but some of them are really absurd). "ps" is ps for a reason. No frequently used command should be more than 4 letters, or require you to use aliases so you don't end up writing a novel.

    Your milaage may vary. I don't care about a scripting language. I have Perl (for Win32). As far as an interactive shell, it still has a lot of rough edges. Personally, I'd rather just use Cygwin/Bash and get a real shell.

    (Though I talked to one of the guys personally and he seems pretty cool.)

    --
    -- Political fascism requires a Fuhrer.
  2. This is pretty clever by Earlybird · · Score: 5, Interesting
    Microsoft is doing something interesting and innovating. The Unix world could use this.

    Basically, Monad formalizes in .NET the pipe interface between shell programs. A pipe participant is just something that implements the appropriate "commandlet" interface: it receives some input, produces some output, maybe some errors.

    However, in the case of Monad the input and output can be anything, not just text. So in the example:

    • get-process | where "handlecount -gt 400" | sort handlecount | out-chart processname,handlecount
    The get-process command produces a sequence of processes; where filters it based on an attribute; sort sorts on an attribute, and out-chart produces a textual table of the filtered output.

    It's important that the input and output of these processes are structures (actually, objects, but I don't want to tickle anyone's prejudices about OOP). .NET knows at runtime about the attributes these structures can have, so you can write apps that manipulate a wide variety of object types: files, metadata-annotated documents, log entries, whatever.

    Naturally input/output can be pure text, allowing all the traditional Unix commands such as grep.

    Immediate benefit? If you have the right translator, there's no need to munge text output using awkward tools like tr, cut, awk and so on, just to get at the process ID column of ps or the URL column of the Apache log file.

    This is better than Unix shells.