this post was submitted on 13 Oct 2023
439 points (99.5% liked)

196

16442 readers
1855 users here now

Be sure to follow the rule before you head out.

Rule: You must post before you leave.

^other^ ^rules^

founded 1 year ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] themoonisacheese 37 points 1 year ago (6 children)

If powershell wasn't a Microsoft product I think it could easily outclass any shell currently available. The concept of command output typing is hand down one of the best features of any shell I've tried.

[–] [email protected] 21 points 1 year ago (1 children)

nushell is a thing, and basically has all the fun powershell features like a type system, but a more Unixy presentation. I've not used it, so don't know if it's actually any good, but it at least exists.

[–] [email protected] 3 points 1 year ago (1 children)

Can you write bash with nushell?

[–] priapus 5 points 1 year ago* (last edited 1 year ago) (1 children)

No, it is its own scripting language.

[–] [email protected] 3 points 1 year ago (1 children)

Is nushell comparable to fish?

[–] [email protected] 5 points 1 year ago

Yes and no. Yes in that it's a different shell that is intended to be used instead of something like Bash, and isn't compatible with Bash scripts. However, unlike Fish and Zsh, it's also not compatible with plain POSIX sh, so you have to run plain shell scripts by calling into something else that is sh-compatible.

[–] [email protected] 12 points 1 year ago (2 children)

Apples to oranges, powershell is windows exposing most of COM, WMI and .NET object models while improving on the previous options with CScript and VBscript, as those are older than .NET.

Why are we comparing it with UNIX/Linux shells is beyond me.

[–] [email protected] 8 points 1 year ago

You say that like it's a bad thing. Having access to all those things by writing a few descriptive words and a great help system (looking at you, linux commands) is awesome.

[–] themoonisacheese 3 points 1 year ago

Because ms is positionning it (and indeed publishing it) as a rival to bash, zsh et al. You can use PS on Linux if you feel so inclined and take advantage of most of the day-to-day features. The .NET interfaces are nice but to me they're more a way for them not to add cmdlets for everything by going "its in .NET already".

[–] [email protected] 11 points 1 year ago* (last edited 1 year ago) (1 children)

How is it being a Microsoft product a bad thing? It's fully open source and available on both Linux and Windows;
also nushell

[–] [email protected] 8 points 1 year ago (1 children)

Microsoft has literally invented EEE (Embrace, Extend, Extinguish).

[–] [email protected] 9 points 1 year ago (1 children)

They didn't embrace anything with PowerShell, it's just a Microsoft product.

[–] [email protected] 8 points 1 year ago

I was just pointing out why people are suspicious of MS.

[–] [email protected] 5 points 1 year ago

nushell is taking the same route I think

[–] priapus 3 points 1 year ago

I like the typing, but I hate the syntax and verbosity of it. It feels very complex to write.

[–] [email protected] 1 points 1 year ago (3 children)

I'm confused by this command output typing you're talking about, and I'm not sure if I found the correct thing. Are you talking about the Write-Host and Write-Output?

[–] [email protected] 9 points 1 year ago

I'd assume they mean that command return values can have types besides string. In classical shells, all data is stringy, so every command has to re-interpret everything. PowerShell can actually use data types.

[–] themoonisacheese 4 points 1 year ago

In powershell, commands may return types different from string and other commands may accept arguments that are not strings. For example, you can pass an array between commands where in bash you just have a string with \n separated values. You may also interact with more complex objects

I once made a script for a monitoring software that takes its input as json, so I built a custom object that had all the data and then called .tojson on it and that was that.

[–] [email protected] 2 points 1 year ago

As far as I understand it it's like stdout and stderr but with some additional ones for debuging, logging, etc..