Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Slashdot Log In

Log In

Create Account  |  Retrieve Password

A Guided Tour of the Microsoft Command Shell

Posted by Zonk on Mon Oct 24, 2005 07:40 AM
from the its-cool-to-have-features dept.
jpkunst writes "Ryan Paul at Ars Technica provides an in-depth, 13 page review of the new Microsoft Command Shell (Monad). (The beta release can be downloaded for free from Microsoft.) From the conclusion: 'Despite my initial skepticism, I am deeply impressed with MSH technology, and I am legitimately excited about the future of the Windows command line.'"
+ -
story
This discussion has been archived. No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More
Loading... please wait.
  • by mi (197448) <mi+slashdot@aldan.algebra.com> on Monday October 24 2005, @07:44AM (#13862974) Homepage
    The "robust commercial applications and standard graphical utilities" are, indeed, in much need of reinvention. Oops.

    And what's with the "unleash" keyword? Do these people really think in terms, that glossy ads use to compare the advertised products with animals?

      • by Jugalator (259273) on Monday October 24 2005, @08:04AM (#13863114) Journal
        Are you talking about the new Vista UI?

        In that case, that's a visual style that's changing only the aspects of the UI Windows XP changed. Windows border styles and new flashy button hover effects, etc. Think of it as a different theme/skin, not a way for them to change the UI design guidelines. "OK" will still always be followed by "Cancel", group boxes will still group UI elements with a relation, menus will still be part of the applications and not the dsektop, combo boxes will still be recommended only in "little space" situations, and so on. :-)

        Actually, Microsoft has released preliminary design guidelines for Vista [microsoft.com], and I was surprised to see how much can be directly applied, and is even recommended to be applied like that, to Windows XP.

        Also, even in Windows Vista, just like in XP, can you still apply the Windows 2000 look & feel via a flip of a switch. That if anything should show that all they're really doing are mostly just applying new skins to sell their product, and not coming up with new guidelines that indeed would alienate their broad customer base. If I'm at some user that have applied some simple settings, I often lose myself in thinking I'm working on a Windows 2000 workstation when I'm in reality on XP.
        • by cnelzie (451984) on Monday October 24 2005, @08:19AM (#13863188) Homepage
          There's far more of a difference between Windows XP and Windows 2000, then just a graphical skin. The methods for accessing a handful of configuration settings windows has altered and in some cases, those configuration modules have changed significantly on their own.

              To say that there won't be changes beyond simple "Graphical skins" simply does not hold with the historical perspective of the sweeping changes with each major iteration of Windows.

              Windows 3.11 to Windows 95 to Windows 98 to WindowsMe, there were underlying configuration changes that made learning the "new" OS important.

              Windows NT 3.5 to Windows NT 4.0 to Windows 2000 to Windows XP also included significant configuration setting alterations that were far more drastic then the "Consumer Level" Windows Operating Systems.
        • by SilentChris (452960) on Monday October 24 2005, @10:04AM (#13863905) Homepage
          I've studied the new UI quite a bit, and you, sir, are clueless.

          Are they keeping things like "OK" and "Cancel? Yes. Are you able to change the look back to Windows 2000 (well, sort of). Yes. They do things like this so people don't need to totally retrain.

          Is the user interface anything like Windows XP, under the hood? No. God no.

          The entire thing has been rewritten from the ground up. Everything is a .NET object, everything inherits from another object. The entire thing is texture based, like OS X.

          What this means is they CAN make drastic changes down the road by simply changing a few objects. Everything will inherit down. Ever notice that buttons can be totally dissimilar from one app to the next, and all MS has been able to do is (for example) but a blue highlight around them? That's because the UI has been so cripped.

          The new UI is simple, beautiful and brilliant. Is it completely different than Windows XP? No. It's not intended to be. The goal, like .NET, is to have a framework to build off for the future. Like .NET, too, the new UI is well-written. I've been programming for it for half a year now and it blows Windows XP out of the water. It even tops OS X in a few areas.
            • by yhamade (301078) on Monday October 24 2005, @12:16PM (#13864996)
              Okay, I don't normally latch onto so such an advert piece of flamebait, but this one I couldn't pass on...
              And so can all the malware, spyware, crippleware, middleware, trojans, worms, viruses, and anyone with even a mild desire to make life difficult for people around them.
              Do you know what the definition of "malware" [reference.com] is? Any code can be malware. If you sent someone a shell script to shutdown their system and they think its a link to their favorite pr0n site, guess what? Its malware!
              Registry + ActiveX + a functional shell (finally) + .NET == cataclysmic user-base catastrophe waiting to happen
              Then by using your logic, so is giving someone the keys to a car.... The registry is a centralized database of configuration settings for the OS and applications. Its no different than having 5000 configuration files scattered through a system, other than of course that its in a centralized database. IMNSHO the *nixes can benefit from this concept. Yes, there are limitations, and there should be better security within it, but nothing is stopping someone from hacking Httpd.conf either.

              Active-X is a development platform. It can be exploited just like anything else, people create java based virii all the time, the problem is users are dumb enough to just hit "yes install this crap on my system".

              .NET is once again a programming API. It's nothing *NEW* its just a uniform model that Microsoft is developing to. Yes, it makes things easier for developers. Yes, this means that instead of the script kiddies having to decipher the Win32API docs, they can use the more developer friendly access methods. But as I said before, any "code" in any language on any platform can be "exploited".

              Here's a nice quote for you:
              'We fear things in proportion to our ignorance of them.' -- Titus Livius

              Now, yes, these things make it *EASIER* for people to take advantage of. However, they were always there, they're there on any platform, its just whether or not people take advantage of them in malice. The better question is "What's MS actually doing to MITIGATE these problems?" Well, I think they finally took a page from the *nix (linux/unix) world and implemented this "revolutionary" feature with Vista: User Account Protection [microsoft.com] What the hell is that you ask? Well, in simplest terms, its sudo. When UAP is enabled, any action you take that requires "administrator" access, will now prompt you for credentials to do so, even if you are an administrator. Yeap, you guessed it, even admins are no longer admins. What's that do to applications? Well, thats for the developers to fix! But it "fixes" one of the most blatant issues most people had with Windows security: that their grandmother had to be an administrator on her home PC to use her copy of Quicken, and because of that, she also had 5kajillian pieces of spyware installed.
                • by Vancorps (746090) on Monday October 24 2005, @04:55PM (#13867021)
                  Please come into the new millenium. If the registry gets corrupted due to a filesystem problem or a piece of malware you don't have to use it. You can either use a backup copy which Windows automatically generates for you or use a failsafe registry which will for all intents and purposes always get you back into Windows.

                  This is the first time I've ever seen someone refer to a database as a single point of failure.

                  Always good to see new things.
                • by ScrewMaster (602015) on Monday October 24 2005, @06:40PM (#13867654)
                  The registry isn't exactly new ... Windows 3.1 had one, I believe. But it was a stupid idea from the start. I understand that Vista is going to be putting more "protections" in place to reduce registry abuse, but nevertheless like Windows File Protection it's just a hack on top of a hack.

                  The only legitimate (and I'm using the term loosely) function that the Registry performs is to make it virtually impossible to move a major application from one machine to another without running the actual installation program. In effect, it's an intrinsic anti-piracy technique. Sometimes I think that's the only reason that it's still there.
      • by everphilski (877346) on Monday October 24 2005, @09:05AM (#13863490) Journal
        The colors may have changed but the patterns are the same. The start button is at the bottom left hand corner. The taskbar spans the entire bottom of the screen. The three buttons on the upper right of any window are minimize, toggle fullscreen/windowed, and exit, respectively, in that order.

        That is what uniformity is. Changing colors / visual schema is not uniformity. That's like saying a green car is not uniform to a blue car. You can still drive it with the knowlege you learned in drivers ed.

        -everphilski-
  • by Anonymous Coward on Monday October 24 2005, @07:45AM (#13862979)
    We must have a working implimentation of this shell in Gnome immediately.

    I propose we call it Gonad.
    It will be the dogs bollocks.
    • by Bobke (653185) on Monday October 24 2005, @09:53AM (#13863824)
      While you are trying to be funny, you are correct,
      unix does need a shell like monad I'm afraid (hence ac)

      What monad will offer is something like

      >ls -l | head -n 10 | sort size | excel

      They are piping objects, we would need to do a lot of parsing to achief the same effect.

      Someone really needs to write a new shell for unix and abstract the unix system, by giving it knowledge of the common unix tools (parsing the output for the user), like ps, ls, sed, etc.

      Want to be famous ?
      Here is your idea.

  • impressive (Score:4, Insightful)

    by Anonymous Coward on Monday October 24 2005, @07:45AM (#13862984)
    Indeed, that MSH demo is impressive and all, but python is great too. System-wide integration? Big fucking deal:
    >>> import kudzu
    >>> kudzu.probe(kudzu.CLASS_HD, kudzu.BUS_IDE, kudzu.PROBE_ALL)
    [Desc: MAXTOR 6L040J2 Driver: ignore
    Device: hda , Desc: ST360021A
    Driver: ignore Device: hdc
    , Desc: Maxtor 6Y120P0 Driver: ignore
    Device: hde ]

    etc, and python is easily expandible to cover ALL the system. What makes MSH rock is that it's a python-like programming languaje PLUS a user-oriented (user=administrator) shell like bash. In linux we're used to program scripts with python, then pass the data through pipes to bash to do something with it. Crappy. When you have to do things like "command | cut -d ' ' -f 3 | cut -d ':' -f 1" to get some data, you know something is WRONG.

    The cool thing about MSH that its a SUBSTITUTE to bash/cmd.exe, not a "complement" like python is. Is not that bash or python are bad, but bash-like shells are 30-years-old unchanged technology. Fortunately, there're people writing user-oriented python-based shells, like http://ipython.scipy.org/ [scipy.org]
    • Re:impressive (Score:3, Insightful)

      by Anonymous Coward
      When you have to do things like "command | cut -d ' ' -f 3 | cut -d ':' -f 1" to get some data, you know something is WRONG.
      Yes. Either your command is wrong (it should do that formatting as its output) or you should have used [g]awk instead of cut.
    • Re:impressive (Score:5, Insightful)

      by NickFortune (613926) on Monday October 24 2005, @08:05AM (#13863121) Homepage
      When you have to do things like "command | cut -d ' ' -f 3 | cut -d ':' -f 1" to get some data, you know something is WRONG.

      Agreed. In this case it's the coder, who should really have enough nous to print the data in the format in which he intends to use it. That's hardly rocket science, is it?

      Of course, if you didn't write the python script and don't have the time and/or skill to hack it, you might nd up using cut and the like to get the data in the format you need. The cool think about that is that it's possible. I don't know if the same can be said under MSH, but it seems unlikely - the focus of Monad seems to be .NET integration, not a stream based filtering command line environment.

      Then again, maybe you didn't even write the wrapper script and don't understand anything. If so you can always troll slashdot as an AC and get some astroturfing in.

        • Re:impressive (Score:5, Interesting)

          by SilverspurG (844751) * on Monday October 24 2005, @09:46AM (#13863771) Homepage Journal
          I'm reading the article and, you know, I'm just not seeing anything in here but a horribly tortured object oriented syntax and a reexpression of MS' nightmarish implementation of the common "--help". I did, however, find this admonishment:
          One of the major frustrations of MSH is the lack of support for piped input in other Windows applications. I can't pipe my HTML content into a new instance of Internet Explorer and I can't pipe my CSV content directly into a new instance of Excel.
          Considering the decades of command line functionality which sh type shells have, apparently MSH is only dreaming of what BASH can do.

          Followed closely by:
          I sincerely hope that the final release of MSH features an entire collection of convert and export commands for a broader variety of formats. Sources inside Microsoft tell us that MSH users will probably use COM and ActiveX to interface with major Windows applications.
          It's a security nightmare waiting to happen. If people think BASH viruses are a potential problem then imagine the full horrors of ActiveX with access to a system shell. At least Mozilla exploits don't lead to "rm -rf /" or malware stuffed all over the system.
          • Re:impressive (Score:4, Insightful)

            by EvilNTUser (573674) on Monday October 24 2005, @01:39PM (#13865643)

            "I'm just not seeing anything in here but a horribly tortured object oriented syntax and a reexpression of MS' nightmarish implementation of the common "--help"."

            The object oriented stuff provides extra features. You can still alias all the old stuff to the usual commands, and it apparently does so by default.

            "Considering the decades of command line functionality which sh type shells have, apparently MSH is only dreaming of what BASH can do."

            Please explain again how you think it's the shell's fault that other applications don't support its features. Oh and btw, `echo 'html-stuff' | firefox` results in a blank browser window.

  • by CyricZ (887944) on Monday October 24 2005, @07:45AM (#13862985)
    Has any project been started to provide an open source clone, similar to what the Mono Project has done with .NET?

    • by LnxAddct (679316) <sgk25@drexel.edu> on Monday October 24 2005, @09:49AM (#13863796) Homepage
      There are already quite a few shells in unix that follow a similar paradigm. Python's default shell comes pretty close, but there are off shoots of it that provide functionality designed to be used as a command shell. MSH is pretty much an interactive ruby shell or python shell designed to run regular commands and treat files like objects (which is as simple as defining a class that can interpret the file information and give it methods like .get_extension) The real key here is that I belive everything is treated as an object. With minor modifications to the python shell and maybe an additional class or two you would have the exact same functionality. You see... there is a reason though that noone has done this. System administrators should not have to learn the concepts of object orientation just to do their job. They are not programmers. Its bad enough when programmers design GUIs because they cater to programmers and not typical users. Monad caters to programmers and not system administrators. Most unix sys admin I know do know how to script in something like perl or python, but most windows admin are point and click or they can type a few commands into a file and rename it to .bat to run it. The monad shell has some great ideas for a shell used by and for programmers, but honestly it isn't a sys admins job to understand programming or programming paradigms. Let admins use simple bash like commands, even if it may not be the cleanest way, conceptually it is often easier, and let programmers script their way out of any hole they want.
      Regards,
      Steve
  • Some Wise Man Said (Score:4, Insightful)

    by R55 (601001) <ravi@indi a . com> on Monday October 24 2005, @07:46AM (#13862987)
    Those who do not understand Unix are condemned to reinvent it, poorly.<br>
    -- Henry Spencer<br>
    Usenet signature, November 1987
  • by zaguar (881743) on Monday October 24 2005, @07:47AM (#13862993)
    The new google shell: Gonad

    It's nuts

  • by SomeoneGotMyNick (200685) on Monday October 24 2005, @07:49AM (#13863007) Homepage Journal
    Backslashdot

    Specializing in Unix bashing (somewhat of an ironic statement)
  • Jeez... (Score:5, Funny)

    by gowen (141411) <gwowen@gmail.com> on Monday October 24 2005, @07:49AM (#13863009) Homepage Journal
    the text-based shell is the nexus of computational control and the point at which proper articulation of will can transform commands into consequences Which leads to two questions : who wrote this shit, and were they getting paid per syllable?
    • Re:Jeez... (Score:4, Funny)

      by revery (456516) <{charles} {at} {cac2.net}> on Monday October 24 2005, @08:35AM (#13863290) Homepage
      Which leads to two questions : who wrote this shit, and were they getting paid per syllable?

      It was the same person that wrote the dialogue for research breakthroughs in Alpha Centauri.

      the text-based shell is the nexus of computational control and the point at which proper articulation of will can transform commands into consequences
      - Col. Corazon Santiago Spartan Programmer's Manual
      • Re:Jeez... (Score:5, Funny)

        by ikkonoishi (674762) on Monday October 24 2005, @09:10AM (#13863520) Journal
        Ah come on those things were great.

        My favorite.


        We are all aware that the senses can be deceived, the eyes fooled.
        But how can we be sure our senses are not being deceived at any
        particular time, or even all the time? Might I just be a brain in
        a tank somewhere, tricked all my life into believing in the events
        of this world by some insane computer? And does my life gain or lose
        meaning based on my reaction to such solipsism?
        ^
        ^ -- Project PYRRHO, Specimen 46, Vat 7
        ^ Activity Recorded M.Y. 2302.22467
        ^ TERMINATION OF SPECIMEN ADVISED
  • On The Pipe (Score:5, Interesting)

    by Murmer (96505) on Monday October 24 2005, @07:57AM (#13863062) Homepage
    It's worth mentioning here that the real strength of the pipe is not "what you can pipe", but "what you can pipe things from, and to", and the fact that you can daisy-chain them together as far as you like. There are literally thousands, maybe tens of thousands of little tools and widgets that you can pipe information into and out of to achieve various effects. Regardless of what new things the MSH pipe can do, the unix world has a significantly larger toolbox.
            • Re:On The Pipe (Score:4, Informative)

              by zootm (850416) on Monday October 24 2005, @09:18AM (#13863580)

              Very true. I think this system could work well though, despite not having used it, but I guess I'll have to give it a go to really know. Kinda worried about the noted limitations of its tab-completion though — that's one feature that I'd, at the very least, find difficult to let go.

              As for more arbitrary pipes, there is some degree of good news in the discussion thread which goes along with the article, in particular this little gem:

              You can essentially make an alias in MSH that associates a short name with the full path of one of the Cygwin command line apps. It's nice being able to occasionally use awk, sed and grep from the MSH command line.

              msh> new-alias grep "C:\Cygwin\bin\grep.exe"
              msh> get-childitem | grep blah

              I'm not sure how far this aliasing can be taken, it's possible it only works on text rather than bitstreams, but it's encouraging that the *nix command line apps can be aliased and seem to "play nice" with the MSH system.

  • by CastrTroy (595695) on Monday October 24 2005, @07:58AM (#13863070) Homepage
    A shell is nice but, can you change all the settings from the command line? The fact that most of your settings are stored in the registry, makes things a lot harder to do from the command line. Sure you could probably change a key or two if you needed to. But you'd probably have to know the exact location. Browsing the settings, to find the key you want, would be a lot harder. Can you install most programs from the command line, and manage all your installed software from the command line. I like the fact that in Linux, most base system stuff is designed so that it can be done by the command line, first and foremost, I like the fact that Linux stores all the settings in text files. This means that you can change the setting with any text editor of your choice. Also, there is a huge library of tools available at the command line. Not just stuff that was thought up by the people who made your command line (bash, csh, zsh), but also anybody else who made just about any other utility.
    • by alecks (473298) on Monday October 24 2005, @09:27AM (#13863636) Homepage
      Yes, you can. you can change registry settings from the command line. Yes, you have to know the exact location, but that's like saying 'you have to know how to use a computer to use a computer'.
      Yes you can install ALL programs from the command line... expecially the ones designed to use the standard windows installer (.MSI). It has some powerful commandline options, which are universal across all apps that use it. Search for msiexec.exe
      You can do everything and anything from the command line. WSH/WMI add a great deal more functionality as well, and you can still keep it at the command line.
    • by TummyX (84871) on Monday October 24 2005, @09:33AM (#13863681)
      If you had read the article you would have discovered that MSH includes a managed virtualfilesystem-like provider for the registry that allows you to navigate the registry and read/write settings.
      • by timeOday (582209) on Monday October 24 2005, @09:53AM (#13863825)
        If you had read the article you would have discovered that MSH includes a managed virtualfilesystem-like provider for the registry that allows you to navigate the registry and read/write settings.
        HA!! It took over 10 years, but finally they're coming around. May I propose a name for that "managed virtualfilesystem-like provider":

        /etc

    • HARD? What's so hard about:

      echo 0x0001429 | regfxr32 \g \l \b \"/virtual registry hive sftwre/000003/Local Users and Directories/software/Microsoft/user/holebert/alpha MIX4_2_07/0x8827832fa777e9182/settings/color\"
    • by WebCowboy (196209) on Monday October 24 2005, @12:11PM (#13864959)
      A shell is nice but, can you change all the settings from the command line? The fact that most of your settings are stored in the registry, makes things a lot harder to do from the command line.

      Very valid concern regarding the Windows platform. You can indeed do most of what you need to do in Windows through a command line if you are a guru, however without Monad Windows command-line capabilities are extremely weak. Regedit can be used at the command line, however it is quite cumbersome--especially if you must browse the registry. The whole concept of the registry puzzles me actually--here is this obsfucated, hidden, monolithic configuration file that holds all this important system information and if it were to be corrupted it could potentially make the machine unusable. In order to manage it, MS spent the time to greate this regedit program to decode the registry and present it as...a filesystem-like tree structure. Good Lord, what the hell for? When MS was addressing the problem of .ini files ten years ago what happened to the KISS principle? They did a good thing when they invented the "Program Files" folder and instructed developers to install their program folders there. Why didn't they just make another directory called "System Settings" and specify a standard .ini file format at that point?

      If that sounds almost like a UN*X /etc directory then you'd be right--it's worked for aeons so why complicate things by re-inventing the wheel? The concept was sound it just needed fine tuning. Then MS wouldn't have had to make a special utility to manage system settings at all if it didn't want to.

      Fortunately MS has seen the light and it appears that they are trying to quietly re-invent Windows in the image of UN*X. Of course, they won't admit their mistakes and copy UN*X/Linux design outright--they are re-architecting Windows using the same concepts but their own dialects (and in some cases they are making improvements to those concepts). This means that Microsoft can claim to be "innovating" instead of fixing bad design decisions. Some examples of the direction MS is going:

      * Monad--an "object oriented shell" that brings a modern image to a very old idea. MS is acknoledging that the command line really IS a good adia and not obsolete, and that it was a mistake to neglect its command line shell. The object oriented approach and consistent interface is a modern solution to a problem originally solved in part with pipes in UN*X. Python provides an object-oriented shell on that platform now--but MS just polished the idea a bit and made the whole shell solution more unified.

      * XML-based config files. You won't ever hear Microsoft admit it, but the system registry is a flawed concept and the implementation in Windows was so bad it was a significant source of relaibility and security problems. If you look hard enough in MSDN literature and in blogs, you will find that MS is quietly pushing developers to eliminate their dependency on the registry in favour of .config XML files stored in the same folder as the application's executable. MS is deprecating any tools they had to deal with the registry in favour of this method of managing system settings.

      * Microsoft has been slowly expanding developer options for creating GUI-less applications (services and console apps). Prior to VS.NET (right up to version 6) to do so required using C or employing awful, unsupported hacks (anyone who has tried writing a VB6 console app or service knows what I'm talking about--the required hooks into low-level Windows APIs make the result so ugly you are best advised to give up and use C anyways). Now MS has the CLR and .NET libraries that make it much easier to do GUIless application developent and allow you to do it in many different languages (although if you look at VB.NET it is more of a CLR dialect than a distinct language anymore--esentially C# without semicolons and a handful of BASIC
  • by Dekortage (697532) on Monday October 24 2005, @07:59AM (#13863078) Homepage

    Just a few days ago, there was another article on Slashdot [slashdot.org] about how Ballmer wants to "storm Linux." If they can convince *nix people that Windows has a powerful CLI, this will do much to suck them in... it is the "eye candy" for true geeks.

    The article author starts to say this himself: My biggest frustration with MSH is the low quality of the actual shell interface. On my Linux system, I am extremely dependent on line editing keyboard shortcuts that simplify manipulation and alteration of command line input. MSH has very few line editing shortcuts, and extremely limited support for tab completion.

    And I remember when CP/M [sysun.com] was all the rage... *sigh*

  • Marketing sucks (Score:3, Insightful)

    by Xarius (691264) on Monday October 24 2005, @08:00AM (#13863094) Homepage
    Yet again Microsoft takes an age-old technology, like scalable icons or transparency, and turns it into the best thing since sliced bread? Shouldn't they be condemned for leaving it this long to release a tool as powerful as this, instead of praised?

    The best I can say is "It's about damn time".
  • ..C# (Score:5, Insightful)

    by jkind (922585) on Monday October 24 2005, @08:02AM (#13863109) Homepage
    Well it looks like C# will be alive and well for some time to come. This article definitely had the feel of Jesse Liberty's Programming C# OReilly book.
    " MSH has a number of unique features that make it easy for users to leverage .NET technology at the command line. Type casting is an easy way to transform a simple core type into a .NET instance or another core type. To cast an instance into another type, simply place the name of the desired type in brackets right in front of the instance. You can change a string into a number with an int cast:
    msh> [int]"5" + 5
    10
    "
    is basically the section from the book on boxing and unboxing. Anyway, as a C# developer, it's great to see the language isn't dying..
  • doing it for? (Score:5, Insightful)

    by sgt scrub (869860) <saintium AT yahoo DOT com> on Monday October 24 2005, @08:22AM (#13863197) Homepage
    I didn't get very far into the article before they got to the "we do things for you" part. Maybe I'm alone in this belief but I absolutely hate it when a language/shell/application will do things for me.
    For instance (from the article):

    MSH features the typical data types found in most other modern languages: strings, integers, arrays, and hash tables. When you enter any of those kinds of values at the command line, MSH will echo them back.
    msh> "blah"
    blah
    msh> 5
    5
    By comparison, in the Bash shell, expressions are always treated as commands and the echo command must be called explicitly if the user wants to display a value at the command line.


    If I want an echo statement I WILL TYPE echo! I don't want the software to ASSUME (make and ass out of me) if I make a typo!
  • by Xthlc (20317) on Monday October 24 2005, @08:31AM (#13863263)
    I kill me.

    Seriously though, the design of MSH is odd. Their hybrid of paradigms from functional programming and OOP is just weird and inconsistent. Having completely different syntaxes for invoking "Commands" and "Methods" is obviously a byproduct of trying to have both a traditional shell syntax and OOPy goodness, without thinking much about internal consistency.

    Typical Microsoft: very use-case focused, at the expense of helping their users build a consistent mental model of how their system works. I bet it's pretty hard to do anything in MSH that its designers didn't specifically anticipate.
    • by kuzb (724081) on Monday October 24 2005, @11:15AM (#13864504)
      Don't you mean "It doesn't act like, SH, ZSH, Bash, etc... AND IT WAS MADE BY MICROSOFT, BUUUURN!"

      I really don't understand people like you. You whine, moan and complain because Microsoft's command prompt sucks, and when they fix it, you go out of your way to find new things to bitch about. What is very interesting, is that if they HAD copied Bash, or one of the other unix command lines, you would have immediatly jumped on them for that too.
  • by Beautyon (214567) on Monday October 24 2005, @08:50AM (#13863393) Homepage
    It looks just like eval.rb the interactive ruby shell:

    http://www.rubyist.net/~slagell/ruby/strings.html [rubyist.net]
  • hummm.... (Score:5, Insightful)

    by Vo0k (760020) on Monday October 24 2005, @08:57AM (#13863436) Journal
    I'm on page 6 already and I must say I start liking msh more and more.
    It's completely un-microsoftish!
    - It's very easy to shoot yourself in the foot. Extremely easy - anything that is not a command is an expression that is evaluated, so a typo may pass unnoticed and without a warning.
    - It provides lots of sweet syntactic sugar making things easy and terse while not overly obscuring them.
    - It takes some of the best from lots of other languages. Shamelessly too. ($_, select, | etc)
    - It makes some evilly hack-friendly assumptions ("current instance" is the current directory)
    - It will likely suck as an interactive shell, but makes simple scripts to automate system tasks obscenely easy. Likely, no more repeating 1000 times "click add user, type username, type password twice, mark 'Password never expires', enter Groups, select 'staff', click 'add group', click OK, click OK".

    It really looks like the project was created by the programmers while the management was on vacations, then all the details hidden and managers just fed with marketspeech while programmers worked on a tool that would finally make THEIR OWN life easier, instead of just appealing to managers of customer companies and making programmers' life more painful.
    • by canuck57 (662392) on Monday October 24 2005, @08:01AM (#13863103)

      Everyone knows that "msh" really stands for "Microsoft Hell".

      And once people realize it is crippled there will be a gsh (Gate Shell) and a bsh (Ballmer Shell) as equally handycaped as the msh. A legal suit will follow from Google for gsh but the bsh will last.

      Wouldn't it be easier just to get a copy of Linux and call it MS-Linux? I thought Microsoft thought all of UNIX/POSIX was crap and you didn't need a shell?

    • by Hektor_Troy (262592) on Monday October 24 2005, @08:53AM (#13863413)
      Wait wait .. so ... when Microsoft does something interesting (it happens) and it's remade in whatever OSS flavor of the month, that's cool.

      But if Microsoft remakes something interesting made by OSS it's stealing.

      I thought, in both cases, it was a matter of reverse engineering and clean room implementation.
    • by 99BottlesOfBeerInMyF (813746) on Monday October 24 2005, @10:07AM (#13863939)

      Hypothetically: What if MS pulls it off and puts out the best OS that the Linux guys have ever seen. Let's say it's the Longhorn Server, WinFS, Monad, and everything MS has been touting works... Will the Linux guys at that point stop bashing MS? Will you consider using the MS OS?

      You're attempting to formulate a "what if" scenario, but as often happens you've oversimplified things on such a scale that it is meaningless. Linux admins do consider using MS products now, and deploy them occasionally where appropriate. As for "what if MS put out a better OS" well, I guess that depends upon what you mean by a better OS. The case for Linux vs. MS is both technological and business. Suppose the next version of Windows is technologically on par with, or better than, Linux as a server. It will still suffer from not being free of cost, not being customizable by the end user, locking the user into a single supplier for a critical component of a system, and putting customers in the position of having to deal with a company renowned for putting it's customers out of business using unfair tactics. No smart businessman wants any of those things. Even so, in some cases it makes sense to put up with those problems, and that is what smart administrators do.

      For example, If I run a smaller business and need specialty software only available commercially on Windows and I don't have the resources and contacts necessary to build a open solution on an open platform, then it makes a whole lot of business sense to buy a Windows machine, at least for that one component. If, on the other hand, I'm working for IBM or a company with similar resources, there is rarely any compelling reason to go with MS for anything, since the resources are available to get a better long-term ROI and TOC by using open source solutions. Why lock oneself into paying a competitor every year, with no competitive bidding, when for a slightly higher initial investment a free alternative, with free development, and some free support can be created, that also places IBM in the position of being a market leader in that particular niche and ties into the bread and butter services business.

      A good analogy might be, you invent a new desert pastry and it needs a fruit filling. You can use oranges, which you can get from any number of vendors, or grow yourself or you can use MSFruit which is patented and you can only buy from one supplier. Even supposing MS gains the edge in harvesting and processing technologies, does it make sense to sign a contract to use them as your sole supplier and agree to never alter your recipe or does it make sense to invest in better harvesting and processing technologies and keep using oranges so that you can take competitive bids and experiment with new recipes?

      Of course, as you said, this is all theoretical. MS is so far behind other solutions in so many areas that they have not even tried to address that it is unlikely MS will catch up any time soon. The fact that they keep introducing anti-features designed to benefit MS as a company and cost customers extra money somewhat counters other advances they make. They pay a lot of attention to bullet points and making things "good enough" while not really achieving that for a good portion of users. They have a few nice features that I'd say are better and more usable than anyone else, but at the same time they are really really behind in other areas and falling further behind all the time. Don't call me when they have pipes and scripting that work without writing any code and from the GUI. Don't call me when they allow programs to offer services to other programs. Don't call me when they fix the disaster they call managing programs. Don't call me when they no longer expose network services by default. Don't call me when they move to open APIs. Don't call me when they open and document their formats and support other open formats. Don't call me when they have workable non-admin accounts. Don't call me when they make the UI responsive during heavy multit