Slashdot Log In
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.
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.'"
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
Loading... please wait.
Who wrote the introduction? (Score:4, Insightful)
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?
Re:Who wrote the introduction? (Score:5, Interesting)
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.
Parent
Re:Who wrote the introduction? (Score:5, Informative)
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.
Parent
Re:Who wrote the introduction? (Score:5, Interesting)
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
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
Parent
Re:Who wrote the introduction? (Score:4, Informative)
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!
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".
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.
Parent
Re:Who wrote the introduction? (Score:4, Insightful)
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.Parent
Re:Who wrote the introduction? (Score:4, Insightful)
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.
Parent
Re:Who wrote the introduction? (Score:5, Insightful)
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-
Parent
Quick! Open Source Monkeys Fly (Score:5, Funny)
I propose we call it Gonad.
It will be the dogs bollocks.
Re:Quick! Open Source Monkeys Fly (Score:5, Insightful)
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.
Parent
Re:Quick! Open Source Monkeys Fly (Score:5, Insightful)
Parent
Re:Better name: Gonuts (Score:5, Funny)
Parent
impressive (Score:4, Insightful)
>>> 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)
Re:impressive (Score:5, Insightful)
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.
Parent
Re:impressive (Score:5, Interesting)
Followed closely by: 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
Parent
Re:impressive (Score:4, Insightful)
"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.
Parent
An open source clone? (Score:5, Interesting)
Re:An open source clone? (Score:5, Insightful)
Regards,
Steve
Parent
Some Wise Man Said (Score:4, Insightful)
-- Henry Spencer<br>
Usenet signature, November 1987
Another Wise Man Said... (Score:5, Interesting)
- Voltaire
Parent
And so did another (Score:5, Funny)
-Suso
Parent
Re:And so did another (Score:5, Funny)
Parent
Google Shell (Score:5, Funny)
It's nuts
New website..... (Score:5, Funny)
Specializing in Unix bashing (somewhat of an ironic statement)
Jeez... (Score:5, Funny)
Re:Jeez... (Score:4, Funny)
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
Parent
Re:Jeez... (Score:5, Funny)
My favorite.
Parent
On The Pipe (Score:5, Interesting)
Re:On The Pipe (Score:4, Informative)
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:
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.
Parent
A shell is nice but... (Score:5, Insightful)
Re:A shell is nice but... (Score:4, Informative)
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.
Parent
Re:A shell is nice but... (Score:5, Informative)
Parent
Re:A shell is nice but... (Score:5, Funny)
Parent
Re:A shell is nice but... (Score:5, Funny)
echo 0x0001429 | regfxr32 \g \l \b \"/virtual registry hive sftwre/000003/Local Users and Directories/software/Microsoft/user/holebert/alph
Parent
Re:A shell is nice but... (Score:5, Interesting)
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
If that sounds almost like a UN*X
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
* 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
Parent
This is just the beginning (Score:5, Insightful)
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)
The best I can say is "It's about damn time".
..C# (Score:5, Insightful)
" MSH has a number of unique features that make it easy for users to leverage
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)
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!
What a weird MiSHMaSH (Score:5, Interesting)
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.
Re:What a weird MiSHMaSH (Score:4, Insightful)
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.
Parent
Interactive Ruby Shell (Score:4, Interesting)
http://www.rubyist.net/~slagell/ruby/strings.html [rubyist.net]
hummm.... (Score:5, Insightful)
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.
Re:The true meaning of "msh" (Score:5, Funny)
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?
Parent
Re:The true meaning of "msh" (Score:5, Funny)
$>
or maybe a few more...
$$$>
ah, what the heck...
$$$$$$$$$$$$$$$$$$>
Parent
Re:The true meaning of "msh" (Score:5, Funny)
bsh> developers
developers
bsh> developers
developers
bsh> developers
YEAH!
Parent
Re:The true meaning of "msh" (Score:4, Funny)
Parent
Re:I'm surprised none of you have seen it. (Score:5, Insightful)
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.
Parent
Re:Hypothetical for the Linux Crew (Score:5, Interesting)
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
Parent