Fish is great. I love how it works by default. I always felt like zsh required too much setup.
Have you also tried nushell? It's great for manipulating data from e.g. .csv
or .json
files. It works with structured data like so:
Welcome to c/linux!
Welcome to our thriving Linux community! Whether you're a seasoned Linux enthusiast or just starting your journey, we're excited to have you here. Explore, learn, and collaborate with like-minded individuals who share a passion for open-source software and the endless possibilities it offers. Together, let's dive into the world of Linux and embrace the power of freedom, customization, and innovation. Enjoy your stay and feel free to join the vibrant discussions that await you!
Rules:
Stay on topic: Posts and discussions should be related to Linux, open source software, and related technologies.
Be respectful: Treat fellow community members with respect and courtesy.
Quality over quantity: Share informative and thought-provoking content.
No spam or self-promotion: Avoid excessive self-promotion or spamming.
No NSFW adult content
Follow general lemmy guidelines.
Fish is great. I love how it works by default. I always felt like zsh required too much setup.
Have you also tried nushell? It's great for manipulating data from e.g. .csv
or .json
files. It works with structured data like so:
I'm honestly just now finding out about all of these different shells, and prompts! It's amazing, and daunting at the same time!
Right now, I'm just using fish since it does the little that I need from the terminal. I am a Linux noob/casual, so working with scripts or CSV or JSON files aren't all that important to me. I will take a look at nushell though! :)
One thing that bothers me about Nushell (even if it doesn't really matter) is honestly just how bloated the table style is, with three columns in each column margin and six columns of enforced line numbers. Why can't it display tables in the same style as regular UNIX commands?
Another thing that bothered me is that the "blessed" way to parse tables from external commands seems very fragile to me. Iirc the builtin parsing commands work solely off table headers, which are locale dependent for many commands, so a script might appear to work fine but suddenly break if an LC_*
environment variable sneaks in somewhere. The size filter trick works nicely for ls
, but doing the same thing becomes painful again when using df
.
I also found the script syntax (implicit line continuations, command seperation, etc.) difficult to understand but presumably that's just a matter of familiarity.
I'll have to give it another try in the future but for now Fish is good enough for me.
Not OP but I fell instantly in love with fish shell and its design principles.
I've also tried nushell and its design and ideas are really cool. I'm sure it can be very useful for often handling data in the shell. But as a daily thing it was a bit much for me at the time to transition to. 😅 I'd love to explore more sometime though.
Yes, it takes some getting used to. I still use fish as my default shell and use nu for working with data.
To get most of the good features of fish in zsh you have to install a bunch of plugins. And it’s way slower than fish as well. I used zsh for like 6 years and when I switched to fish (probably in 2018 or 19) I’ve never gone back. Fish is just so much better.
since I switched to NixOS I'm finding this out now. Prior to this every Distro I was on I used zsh/oh my zsh because I'm a dummy and need the autosuggestions, autocomplete, syntax highlighting etc and it was quick, no issues.
Now that i'm on Nix zsh is slow to get to a prompt. logging in via tty takes 2-5 seconds to hit a prompt, in a terminal about the same. maybe I set up my nix config wrong, I don't know. I'm only loading those three pluggins and I've boiled it down to the autosuggestions and or autocomplete.
It might just be a conflict with NixOS' auto suggestsions/complete thing (likely is) but if Fish or Nushell has the same 3 features I need because, again, i'm a dummy then I'd happily switch.
And it’s way slower than zsh as well.
Did you intend to write this part like this?
No I’m really tired and I think I backspaced and fished it up. OK I’m leaving that autocorrect cause it’s funny
Edit: updated and fixed to say “it’s way slower than fish”
"zimfw"
Look at what they need to mimic even a fraction of [fish's] power ☝️
Idk, it could be argued that the ability to add exactly what features you want via plugins might make the shell more minimal and faster. Although most people don't know what they want and just install everything.
I'd rather have the official shell code add the features I want rather than have to maintain a list of the plugins written by god knows who, that add the functionality I want. Just my own gut feeling, you could call it.
Yep, leave the default shell as-is and either set the terminal app to spawn the one you want, or exec fish from the existing shell profile in interactive cases.
All we need, baby, no reason really to make it the default shell for the user.
I gave it a try recently and ended up going back to zsh and plugins that do fish things.
So you want the features of fish? Why'd you go back to zsh then?
I use fish on a couple of devices, but damn it's frustrating when you want to do a fast and simple bash scripting and it doesn't work. Frankly now I think it would have been better to spend some time to setup zsh.
but damn it's frustrating when you want to do a fast and simple bash scripting
Of course it's going to be frustrating to try to write bash scripts and then try to run them as fish scripts.
What you should be doing is writing fish scripts and running them as fish scripts. That is a much more pleasant experience. 🙃
I know. I just don't want to. There's no point in learning fish scripting, you won't use them anywhere unless you want your colleagues to hate you because now they also have to learn it for no reason.
I only use my scripts privately and my scripts are now shorter and easier to read and maintain. Also I use it as my everyday shell, and I couldn't be happier with a shell right now, that I know of. The documentation is also extremely good. Simple to understand, and a small language.
There's a big point to learning it if you like its design principles. But if you don't, then there isn't. 👍
Enjoy whatever shell you like!
I still write all my scripts for bash (or busybox sh) with a shebang, then call it from fish.
I do too but then you want to just run basic for i;do x;done and you need to translate it to fish syntax.
It wasn't much of a problem but this thread actually convinced me that there's less profit from fish than using something like an old oh-my-zsh(probably much easier to setup now).
Is it good if you setup your new pc, don't have your configs at hand and want a nice terminal with convenient features? Definitely. But I think it's better to spend 5 minutes afterwards to move away from it.
I considered Fish but decided against it because of POSIX compliance
I'm not trying to change your opinion, just curious: what is the reason for wanting POSIX compliance? You often share scripts? Dotfiles perhaps?
I am shitty at shell scripting, so I often use other people's scripts from the internet with some minor tweaks. I've also put a lot of time into learning the nuances of zsh so there is also a lot of the sunk cost effect going on.
Also, and this is an assumption, I think other shells just have a lot more online resources you know? I have not yet found any problems or ideas I've had that someone else haven't also had and solved.
Cool, thanks, that explained everything for me. 😁
Fish isn’t posix compliant, so some scripts I use had issues. I'll play devil's advocate, why do you like fish? :)
I like fish because it requires no setup to be nice to use and the scripting is more intuitive when not doing it constantly.
so some scripts I use had issues
I just rewrote all of my scripts in idiomatic fish. 😄
why do you like fish? :)
It made my scripts 50% shorter on average, and 100% more legible. Short and simple. The code is easier to read and maintain, IMO. Less magic syntax that you need to look up in the bash manual* every dang time. You come back to your scripts after a few years and you just instantly can see what they do, without comments.
(*) Speaking of the manual. The bash manual is quite long. And the zsh manual is a f—ing mess, split up into so many sections, and the thing I want to find is never where I first look, so I just go into the zsh "all" manual, which is humongous and difficult to navigate, basically just a cat
of all the different zsh manuals.
Fish has a short and sweet manual because the language is very small, and every command has its own manual page as well, which just makes sense on some level. Also it's available as a web page by typing help
. Very convenient.
Very well thought out. 👌
Shellfish aren't kosher
I like Fish a lot, it's a good shell.
How does it compare to bash?
I am a relatively casual Linux user (headless Pi-hole and grandma used to use Ubuntu for basic use cases) and have only ever used Bash, that too for relatively simple tasks.
I do not use bash for anything other than running what a casual Linux user would be running. I like it for the autocomplete functions, and the TAB feature to give you my own reasons! That's all I need in my setup, so it works way better than bash. :)
If you ever copy paste commands you don't understand (and aren't prepared to take a detour down a rabbit hole to figure out why they didn't work), stick with bash (or zsh).
Fish isn't "posix compliant" which can make some things work (or not) unexpectedly.
Don't get me wrong, it's a great shell and there are many reasons people emulate its behaviors in other shells, but I can't recommend it as a "newbie" or "casual user" choice.
It’s vastly more user friendly than bash, though if you need to write a script and only know bash then you should drop back into bash.