this post was submitted on 16 Aug 2025
53 points (92.1% liked)

Linux

9008 readers
158 users here now

A community for everything relating to the GNU/Linux operating system (except the memes!)

Also, check out:

Original icon base courtesy of lewing@isc.tamu.edu and The GIMP

founded 2 years ago
MODERATORS
 

Didn't know about auto populating search queries, abbreviations, string scripting, and using private mode.

top 29 comments
sorted by: hot top controversial new old
[–] clot27@lemmy.zip 6 points 1 day ago (1 children)

Jokes in you, I am already using it

[–] prettybunnys@sh.itjust.works 2 points 1 day ago

Fish + starship is my go to

[–] Fizz@lemmy.nz 9 points 2 days ago (1 children)

I'm worried that I'll get used to the quality of.life improvements and then I'll make a dumb mistake using bash at work.

[–] xav@programming.dev 3 points 1 day ago (1 children)

Simple solution : use fish at work

[–] Laser@feddit.org 2 points 1 day ago

Just don't microwave it.

need a blahaj shell desperately

[–] SinTan1729@programming.dev 2 points 1 day ago (2 children)

It's perfect for daily interactive use, but terrible for scripting. I write almost all my scripts in bash, the only exceptions being convenience scripts for fish itself.

[–] traceur301@lemmy.blahaj.zone 2 points 1 day ago

I still work with bash scripts from fish (to interoperate with bash users), but it's more like how I use python: the interpreter is specified either in the shebang or explicitly on the cli command invoking the script. It works quite well actually

[–] Laser@feddit.org 2 points 1 day ago (1 children)

Same, but I don't think it was ever intended differently; I mean the word interactive is literally in the name. If you want portable scripts, use bash. For simple helpers, quickly define a function. If you feel your script becomes too long, use Python.

[–] SinTan1729@programming.dev 2 points 1 day ago (1 children)

Agree, although I've recently replaced the python usecase with Go. Almost as easy to write, but much faster and safer.

[–] Laser@feddit.org 1 points 1 day ago

Oh yeah, I never used Python myself and did some very simple (but IMHO too much hassle in bash) Go stuff some time ago. It's a really good language for that, and if you can't build on the target, the binary is statically linked anyways.

[–] BrianTheeBiscuiteer@lemmy.world 44 points 3 days ago

But I am using Fish. It's like you don't even know me!

[–] hperrin@lemmy.ca 14 points 3 days ago

But I am using fish.

[–] gamma@programming.dev 6 points 2 days ago* (last edited 2 days ago) (1 children)

Scrubbing through the video, this hurts my soul

echo $(echo $STRING | sed 's/World/Bash/')

For variables bash has PE forms:

echo ${STRING/World/Bash}

I miss these too much when I try Fish.

[–] Laser@feddit.org 1 points 1 day ago (1 children)

What's so bad about string replace World Bash $STRING?

[–] gamma@programming.dev 1 points 1 day ago* (last edited 1 day ago) (1 children)

Nothings bad about it. I don't think it's strictly better or worse. Just

  • I'm used to it
  • The comparison in the video was just disingenuous.
[–] Laser@feddit.org 1 points 23 hours ago

I haven't watched the video, but maybe it wasn't in bad faith, but the author didn't know better. bash can be arcane at times, like when I open my old scripts I often have no clue what exactly is going on without comments. Substring removal comes to mind.

[–] Ephera@lemmy.ml 10 points 3 days ago* (last edited 3 days ago) (1 children)

I wish that string command and also their math command were just general-purpose utilities pre-installed on all systems.

Tried to script something with sed the other day and was so confused why my regexes weren't matching, until we realized you need to pass --regexp-extended to get modern-day regex.

And then I later tried to calculate an average, which bc decided to round down, because it was presumably doing integer math. I actually ended up running python -c "print($total / $count)", because I could not be arsed to work out, if there was some flag to make bc work properly.

I'm fine with these tools continuing to exist for legacy purposes, but I would like a modern replacement just about now.

[–] gamma@programming.dev 3 points 2 days ago

string split/collect and similar can't work unless its a builtin. The set foo ( ...... | string ... ) pattern couldn't work if string was an external binary.

[–] HappyFrog@lemmy.blahaj.zone 6 points 3 days ago (4 children)

I use Nushell, yes, I know I'm insane.

[–] yetAnotherUser@lemmy.ca 2 points 1 day ago

I wouldn't use Nushell as my main shell, but I love using it for data manipulation. It's incredible for that <3

afaik it's way more versatile than using jq.

[–] gamma@programming.dev 6 points 2 days ago

I get annoyed by differences with (Ba|Z)sh when I try Fish, but nushell is so much its own thing that it's fun.

[–] Cris_Color@lemmy.world 4 points 3 days ago* (last edited 3 days ago) (1 children)

I'm glad you mentioned nushell (it sounds like) is a more poweruser thing. Someone recommended it in place of fish in another thread and I was curious to check it out, but it sounds like not at all what I want or need as a fish user and that saves me the trouble of trying to make heads or tails of a terminal tool I don't understand

But it looks like a cool project and I'm glad it exists for people like you! 😊

[–] Laser@feddit.org 1 points 1 day ago (1 children)

I’m glad you mentioned nushell (it sounds like) is a more poweruser thing.

It serves a different niche. nushell is very good for working with structured data. fish on the other hand is a "conventional" shell that's not POSIX compliant. I guess that's why they call it "a command line shell for the 90s" because it doesn't incorporate modern concepts, it's just more convenient than POSIX shells.

This results in some notable differences: nushell for example has actual data types (https://www.nushell.sh/book/types_of_data.html, though they are dynamically typed by default).

All this doesn't mean that one is better than the other. I use fish daily and just sometimes dabble in nushell because most of my workflow doesn't require all the stuff nu offers.

[–] Cris_Color@lemmy.world 1 points 1 day ago (1 children)

The only thing I really care about is my terminal having a slightly more approachable user friendly ux when I need to do things in the terminal that can't be done graphically.

I'm generally a fairly non-techincal (by linux community standards) design nerd. I'm not even sure what strucrued data would really mean, so I'm pretty sure it's not useful to my usecase lol

When I need to run random shell commands I found on the internet like the non-technical, bad-life-decision-maker that I am I can just run them through bash instead 🤷

The only thing I miss from bash is things like !! Which I think fish is in the process of adding (there's a keyboard shortcut that I think allows you to fill the same need but I find it harder to remember and have been having fun using opendoas in place of sudo, which the shortcut uses by default)

[–] Laser@feddit.org 2 points 1 day ago (1 children)

I’m not even sure what strucrued data would really mean, so I’m pretty sure it’s not useful to my usecase lol

Probably not, but to give an easy example:

~> ls | where modified >= (date now) - 30day
╭───┬───────────┬──────┬────────┬────────────╮
│ # │   name    │ type │  size  │  modified  │
├───┼───────────┼──────┼────────┼────────────┤
│ 0 │ Downloads │ dir  │ 4,0 kB │ 4 days ago │
│ 1 │ Musik     │ dir  │ 4,0 kB │ a week ago │
╰───┴───────────┴──────┴────────┴────────────╯

Here, ls doesn't just return a string representing directory content as text, but a table where each file is an entry with attributes that have their own data type (e.g. size is Filesize while modified is Datetime). That's why I'm able to filter based on one of them; that part isn't part of ls, but of the shell itself. In a classic shell, this filtering would need to be handled in the originating binary in its own specific way, or you'd need to parse its output, transform it using tools like sed and awk etc. This here is a special case because ls is built into the shell; for non-builtin commands, if they offer it, you can have them output structured data as json or something else and read it into nu, like

~> ip -j a | from json | where {|device| $device.address? != null and $device.addr_info? != [] and $device.link_type =~ "ether"} | get addr_info.0 | select -o local broadcast scope
╭───┬────────────────────────────────────────┬─────────────────┬────────╮
│ # │                 local                  │    broadcast    │ scope  │
├───┼────────────────────────────────────────┼─────────────────┼────────┤
│ 0 │ 192.168.178.72                         │ 192.168.178.255 │ global │
│ 1 │ 2001:9e8:4727:2c00:3071:91ff:fed1:9e26 │                 │ global │
│ 2 │ fdaa:66e:6af0:0:3071:91ff:fed1:9e26    │                 │ global │
│ 3 │ fe80::3071:91ff:fed1:9e26              │                 │ link   │
╰───┴────────────────────────────────────────┴─────────────────┴────────╯

It's kind of cool, but I don't need it that often either, so I just play around with it when I feel like it.

[–] Cris_Color@lemmy.world 1 points 21 hours ago

Interesting, thank you very much for taking the time to explain 😊

[–] rozodru@social.vivaldi.net 6 points 3 days ago (1 children)

@HappyFrog @ruffsl you're not insane. I think you're a person that knows what they like and knows what works for them which is the beauty of Linux.

Also I've never heard of nushell and now you've made me want to check it out!

[–] HappyFrog@lemmy.blahaj.zone 4 points 3 days ago

Thank you :3 I just like structured data. It's tedious, and it won't work with most apps, but it's beautiful.