Slashdot Mirror


Next-gen Windows Command Line Shell Now in Beta

Suddenly_Dead writes "Microsoft's new command line shell, MSH or Monad, has entered the beta phase. Channel9 Wiki has information on how to download this (complete with Guest ID), and other related info."

18 of 668 comments (clear)

  1. First impressions by Alioth · · Score: 4, Insightful

    I've had it since yesterday.

    My first impression - well, it will be fine for scripting, but as it stands it's appaling as an interactive shell - possibly slightly worse than cmd.exe as an interactive shell, and falling far short of bash/tcsh et al. The defaults for the commands seem way too verbose. If you're just passing objects around in a script that's fine - but for interactive use, it's just awful.

    1. Re:First impressions by SnprBoB86 · · Score: 3, Insightful

      There autocompletetion as well as an abreviation usage system. If you still don't like the verbose names, alias them.

      It's that simple.

      Short, cryptic names hinder usablity by greatly increasing the learning curve. "get-process" is far more intuitive than "ps", as "where" or "filter" is far more intuitive than "grep". If you find yourself typing "get-process" a million times, learn to type faster or alias it to something shorter.

      --
      http://brandonbloom.name
    2. Re:First impressions by Des+Herriott · · Score: 5, Insightful

      "get-process" is far more intuitive than "ps"

      No, it is not. Neither is intuitive - a complete newcomer would have no chance of guessing either command. Both must be learned. Given that, I'll take the 2-character command over the 11-character command any day.

    3. Re:First impressions by slavemowgli · · Score: 4, Insightful

      That, frankly, is rubbish. Someone who doesn't know about the commands and what they do will have to learn their names anyway; it doesn't matter, for example, whether you have to remember "get-process" or "ps". In fact, it might be easier to remember "ps", as it is shorter and more concise.

      As for the suggestion to alias commands so you don't have to type as much - wow, that's even more braindead. Part of the appeal of Unix is that the commands are pretty much the same everywhere - I can use grep to grep for things, for example, and expect it to work more or less the same on every platform. What you're advocating is the creation of an entirely individual set of commands, so administrators will either have to keep both sets of commands in mind (even more of a hassle), or be unable to (easily) understand each other because one abbreviated "get-process" as "gp", one used "ps" instead, and so on.

      --
      quidquid latine dictum sit altum videtur.
    4. Re:First impressions by Ingolfke · · Score: 3, Insightful

      Both must be learned.

      Both must be learned and remembered. Longer names allow for an easier to remember naming convention that can then help you remember or find the command you wanted. Two letter commands are certainly easier to type, but as others have mentioned the command completion in the interactive shell should take care of that.

  2. whoosh! by lheal · · Score: 5, Insightful

    That was the sound of the point, flying past Microsoft's Collective brain.

    The Unix shell is the implementation of the Unix philosophy of small parts working together. It's the antithsesis of Windows' philosophy of providing everything possible through DLLs distributed with the OS.

    For a shell to be useful, you need lots of little tools. Otherwise you're just trying to provide an isomorphism to the GUI, with command line switches and arguments taking the place of check boxes.

    On the other hand, I suppose it's better than nothing.

    --
    Raise your children as if you were teaching them to raise your grandchildren, because you are.
    1. Re:whoosh! by Eudial · · Score: 4, Insightful

      $ ps vOr

      List processses, order by memory consumption, saving 52 keypresses.

      If you absolutely -must- sort out those that have less than n mem usage, try
      $ ps vOr | awk '{if ($8 > 15000) print $_ }'

      Still 15 less characters than your example...

      --
      GAAH! MY PRINTER IS ON FIRE!!! PUT IT OUT! PUT IT OUT!
  3. Re: No Thanks by lazy_arabica · · Score: 5, Insightful

    Why do the unix zealots always dismiss ANY attempt to make the user experience more high-level / semantic-oriented (especially if it comes from Microsoft) ? I am a Unix-user, but I'm also very interested in MSH, some of its features sound really innovative and powerful. I'll probably stick with bash too though, until Unix becomes deprecated (because I don't think it will ever evolve, since so many people, like you, think the perfection has been invented 30 years ago.)

  4. Anything would better! by toupsie · · Score: 3, Insightful

    Trying to script using cmd, vbscript, wsh, wmi, adsi technologies compared to the userland in Unix systems for core system administration is a complete hassle. I have ended using Perl w/ Win32::* extensions and a lot of backticking and substitutions to get the job done. I will be looking forward to any improvements that Monad provides. I really hope that Microsoft looks toward BSD (Mac OS X) and Linux systems and takes to heart the ease that shell scripting in these systems provides. And for God's sake, make it easier to determine the IP address associated to a printer in a clustered virtual print queue! (Hint: you have to use an undocumented DLL that can only be found in a locked filing cabinet stuck in a disused lavatory in an unlit cellar with a sign on the door saying 'beware of the leopard' section of the Resource Kit).

    --
    Strange women lying in ponds distributing swords is no basis for a system of government.
  5. Re: No Thanks by grasshoppa · · Score: 4, Insightful

    Yes, cygwin makes common Unix shells available on windows, but it's just a CLI. It doesn't interact with the rest of windows, the registry, other user space apps, etc. It's basically just a way to interact with your file system... Monad is a big step ahead for windows...

    Talk about proving the quote right.

    That's all bash is. That's all it does in linux too. You use other programs to do the work, bash is simply an interface to the file system. And a damn elegant one at that.

    --
    Mod me down with all of your hatred and your journey towards the dark side will be complete!
  6. Re:That's all well and good by CaroKann · · Score: 5, Insightful

    A windows shell, without the various limitations of the DOS shell, would be very useful in more ways than I can count. For example, DOS .bat files are still used a lot, especially in cases where you want to run an application, like a Java based program, with it's own system environment setup.

    Lots of people are "bashing" this up agianst various Unix shells, but what does it matter? Windows needs something like this, period.

  7. Re:One Perl by Telastyn · · Score: 3, Insightful

    Why do the majority of 'out of the box' unix scripts run in plain sh?

    Because in single user mode, or on a minimal install, that's all that guaranteed to be there.

  8. Re: No Thanks by SilverspurG · · Score: 4, Insightful
    To me, Monad is an exciting effort to try to reinvent the command line.
    The biggest hurdle for the Monad shell is that Microsoft has painted themselves into a corner. The vast majority of software running on a Windows platform was not written with command line operability or scripting in mind.

    The Monad shell may be nice. Heck, it may turn out to be superior to any *nix *sh shell. When it comes right down to it, though, the Windows developers are not going to begin rewriting all of their software just to make it command line compliant.

    Monad is doomed, not by Monad, but by Windows.
    --
    fast as fast can be. you'll never catch me.
  9. Ok, ok... fun's over--seriously now... by nightcrawler.36 · · Score: 4, Insightful

    When I first read this, I too thought MS was just retooling some form of CMD to compete with the new-found craze in command lines. But then I read about it on Wikipedia.org. It's considerably more than most of you are thinking. I'm not going to point out what it does here, go read about it(if you don't know what it is.). But how much of this is Microsoft bashing and how much of this is a legitimate analysis of the quality of computer user tools? I think we're seeing a world where things are starting to settle in to what they should be. Windows are going to be desktop machines, *nix are going to run servers(not IIS) and Macs will continue to win the hearts and minds of artists, universities and affluent kids. MS is not reinventing UNIX. They're simply providing *NIX-like tool for "Windows" developers'. It's called competition and it's good for us. It gives me yet another option to choose from. Welcome it! you don't have to use it if you don't like it.

    --
    - nightcrawler "Reality is an illusion, albeit a ver persistent one..." -A.Einstein
  10. Re:backslashes by TheAncientHacker · · Score: 3, Insightful

    And yet another classic example of tunnel vision Unix bigotry. If it isn't exactly the way I learned it, it's broken.

    Here's a clue, try learning something new once in a while...

  11. what can UNIX learn from this? by ArbitraryConstant · · Score: 4, Insightful

    I don't think many of us care that the command names are a little hard to remember. I have just as much trouble remembering stuff from APIs with nice names like Java.

    No, this highlights a weakness in UNIX shells: we have to parse things. It's slow and it's a huge pain. It seriously limits what we can do. grep, sed etc can be used to manipulate streams but nobody ever implements the complete grammar of the input they can get. They implement some subset that's good enough for the job at hand and tweak it when it screws up. It's worked well for decades, but that doesn't mean we can't do better.

    Having a data structure passed along a pipe like MSH does is a huge advantage and very efficient, but I think most UNIX people can agree that it's not worth it to bring everything into the same process. What's an alternative? Serialize the data structure (in some human readable form to stay true to UNIX tradition) and pass that down the pipe, from one process to another. That would work with the pipes we have now and the shells we have now, we just need new tools and a serialization protocol.

    --
    I rarely criticize things I don't care about.
  12. Re: No Thanks by NickFortune · · Score: 4, Insightful
    Well, it might have something to do with the Windows zealots have sneered at all things *nix for years on end. That does tend to bring about a certain amount of crowing when Redmond, years after trumphantly declaring a technology obsolete, copies it amidst much fanfare and proclaims it to be the Way Forward.

    Yep, that'd do it for me :)

    --
    Don't let THEM immanentize the Eschaton!
  13. Re:If it's good.... by IamTheRealMike · · Score: 3, Insightful
    having to support legacy concepts (such as drive letters);

    Whilst the UNIX style unified directory hierarchy is aesthetically pleasing to computer scientists, I've never been convinced that it's really more usable. On Windows, people can learn a few simple letter to concept mappings "A" is the floppy disk, "C" is the stuff inside the Computer, "D" is the cD-rom drive, "E" is their usbEE kEE. Obviously not all systems will be like that, but it's common enough. On UNIX systems the location of floppy disks, installed programs, mounted USB keys and so on tend to move around unpredictably.

    Incidentally, talking of legacy concepts, what do you think "mounting" is? It dates from the time when you had to mount tapes onto their reels!

    licensing concerns (like XP workstation allowing only one user at a time);

    I don't see how this would affect a command shell designed for personal use. I also don't understand how it only allows one user at a time - in the copies of XP I've seen multiple users can log in at once, then you can rapidly switch between them. If you are thinking of X and terminal servers, well, you can have a command line without that. Look at MacOS.

    wide-spread security concerns resulting in the feature being turned off by default on most installations;

    There's no evidence I can see that suggests this would be off by default. Actually MSH could be a lot more secure than the UNIX shell as it can be fully controlled by .NET Code Access Security, which is more fine grained than traditional UNIX permissions.

    wide-spread fears of accidental and intentional incompatability;

    By adding a new end-user feature? That never stopped them adding themes, Media Player, MSN Messenger, etc. Compatibility concerns for something totally new are far less serious.

    being only available as part of an expensive (and extensive!) upgrade;

    In contrast to what? Microsoft backport far more stuff than Linux vendors do, and Apple basically doesn't backport anything at all. That's $120 per upgrade, thanks very much.

    Seriously. The guys working on MSH have blogs, I read a few, and they seemed very sharp to me. The MSH API seems quite lightweight and I suspect you'll be able to create new commandlets very easily - far easier than you can create new command line tools on Linux. Some of the examples they showed would require thousands of lines of code to write on Linux once you take into account the build system, the fact that they're usually written in C, the text parsing with extra checks for buffer overflows etc. Yet using the MSH API they fitted onto a single screen of text.

    I'm not too worried, I don't use Linux over Windows just because of bash (surprise), I use it because it's Free (and it has some other neat features I like). Actually, most UNIX shells suck ass. Their builtin programming languages are hideously primitive, unintuitive, and are easy to screw up. Getting basic information out of common tools requires a guru-level knowledge of sed, awk and Perl style regular expressions which are themselves primitive, backwards and unintuitive.

    You'd have to work pretty hard to produce a command line worse than the UNIX one (and no, cmd.exe does not count as "working hard", I suspect it's had about a weeks worth of work in the last decade).