What’s your favourite to use? Mine is Fish due to its ease of use and user friendly approach.
Bash is the pepperoni of shell tools being reliable in every field no matter what but I’ve moved to Fish as I wanted to try something different.
So what’s your shell of choice?
Powershell, but heavily customized.
Microsoft copilot
I know I’m a heretic but I’m a huge powershell fan. Once you work with an object-oriented shell you’ll wonder why you’ve dealt with parsing text for so long. Works great on Linux, MacOS and Windows, it’s open source, reads and writes csv, json and xml natively, native web and rest service support, built-in support for remote computing and parallel processing and extensive libraries for just about anything you can think of. It takes a little getting used to but it’s worth it.
I use powershell by default on windows and I prefer it for scripting any day of the week vs. shell scripts. It’s not the fastest but you can always plug in .net to your scripts to dramatically improve performance. Sure, I could write the script in rust or whatever to make it even faster, but that’s way more work than I need for the lifespan of the script.
TBH, I use Powershell on my Windows install, and they’ve made some good improvements over the years. I forget that it also works on Linux.
Shame v1.0 ships with new installations, and you have to manually go out and install the latest versions to get the benefits. Dunno why MS doesn’t just automatically update it with everything else.
V1 never actually shipped with any version of Windows
Windows 7 shipped with V2, 8 with V3, 8.1 with v4, and 10 with v5 and later 5.1.
5.1 is the latest (and last) version of Windows PowerShell.
All versions after that are just PowerShell (or PowerShell Core for version 6)
Not sure why they don’t bundle it by default, but starting at v7.2 it can be updated by Windows update
PowerShell, because of autocomplete and shift+arrows select.
PowerShell, with zsh being a close second
Feeling risky today, eh? Mind sharing the reasoning behind your extravagant choice?
Not sure what’s extravagant about it… Fully object oriented pipeline in a scripting language built on and with access to the .NET type class system is insanely powerful. Having to manipulate and parse string output to extract data from command results in other shells just feels very cumbersome and antiquated, and relies on the text output to remain consistent to not break
PowerShell, it doesn’t matter if more or less data is returned, as long as the properties you’re using stay the same your script will not break
Filtering is super easy
The Verb-Noun cmdlet naming convention gets a lot of (undeserved) hate, but it makes command discovery way easier. Especially when you learn that there’s a list of approved verbs with defined meanings, and cmdlets with matching nouns tend to work together.
It actually follows the Unix philosophy of each cmdlet doing one thing (though sometimes a cmdlet winds up getting overloaded, but more often than not that’s a community or privately written cmdlet)
It’s easily powerful enough to write programs with (and I have)
And it works well with C#, and if you know some C#, PowerShell’s eccentricities start to make way more sense
Also, I mainly manage Windows servers for work running in an AD domain, so it’s absolutely the language of choice for that, but I’ve been using it for probably close to 14 years now and I can basically write it as easily as English at this point