Comment by pjmlp
8 years ago
> cmd.exe isn't exactly usable
Depends, for the occasional deep into CLI world to run a script, is quite ok.
Granted, the defaults regarding mouse copy-paste and window size were only improved on Windows 10.
> Not to mention that since developers are only using Linux and Mac, you will have libraries which does not work on windows (because nobody even tried).
Not all developers are pure UNIX devs doing POSIXy stuff.
I agree - cmd.exe is quite usable, especially considering it's (almost) always available no matter what machine you use.
Why they're trying to replace it with Powershell rather than improving cmd.exe is silly, however.
I happen to like Powershell's idea, as it is the closest to the REPL experience on Xerox PARC inspired systems, we get to have on mainstream environments, by using objects and having access to the full set OS APIs on the scripting prompt.
However I do think it could have been made less verbose and dislike the ps1 extension, as the 1 (one) does not make sense.
Verbosity is something I tend to reserve for scripts (which should not rely on certain aliases existing). In the shell code I write approaches golfing idioms (perhaps inspired by the fact that I learned PowerShell by golfing in it). I think they've done a good job of having the verbose things readable and understandable, while also being able to shorten parameters as long as they remain unambiguous (and offering short aliases for cmdlets that are used all the time).
I heard they wanted to use the ps extension but that has long been used for PostScript, and though very few Windows users use PostScript files directly they still didn't want to step on those toes. Particularly, they were very cautious about using anything that looked like an existing file extension because they didn't want it to be an easy vector for malware to confuse users. ps1 doesn't step on any toes, at least, and looks weird enough to an average computer user that they might hesitate to double click one.
1 reply →
Powershell has short default aliases for its verbose builtins, and most parameters have short versions as well.
For instance, "%" is an alias for ForEach-Object, "ls" for Get-ChildItem, etc. And you can of course define your own.
1 reply →