Fish Shell 3.5.0
fishshell.com
fishshell.com
3 months ago, 90 comments https://news.ycombinator.com/item?id=30734072
3 months ago, 20 comments https://news.ycombinator.com/item?id=30660587
7 months ago, 291 comments https://news.ycombinator.com/item?id=29341390
Yes! This has been annoying with curl for a long time.
(I'm a fish developer)
If you love bash or zsh, and are in the habit of building long complex commands on the command line, then stick with bash or zsh. But if you are just running commands fish is far superior. If you are not a bash/zsh/posix expert fish is a cleaner language and you'll learn it more easily. A fully tricked out zsh might do everything that fish does, but it is very slow compared to fish.
Fish handles this very ably as well, of course! If you're a developer and you work in or deploy to a lot of environments where you can't install software, choosing what comes with the environment makes sense. But even when it comes to scripting, you won't regret sticking with Fish, imo.
> archlinux-java (#8911)
> apk (#8951)
> brightnessctl (#8758)
> efibootmgr (#9010)
> fastboot (#8904)
> optimus-manager (#8913)
> rclone (#8819)
> sops (#8821)
> tuned-adm (#8760)
> wg-quick (#8687)
One of my favorite things about fish is that it bundles completions for a huge number of packages. My experience with bash was that completion support was very spotty
I found that ZSH managed with OhMyZSH plugins gets me similar functionality without the syntax incompatibilities. Unfortunately unless Fish moves back towards compatibility I don't see myself ever going back, it's just too much hassle dealing with little syntax issues all the time.
So yeah, shell scripts work exactly the same if you're running them as an executable. Some scripts, however, (like for instance .bashrc) are intended to be sourced by the shell rather than invoked as an independent executable. These won't work, and will need to be ported.
Is there any reason to use Zsh at this point over Fish?
fish: Invalid redirection target: yq3 r <(kubectl get nodes -o yaml)
Also, you could do what I do: leave bash or something else as the default, and then just run fish manually.
Then if I have a problem pasting or something I run type exit.
But the incompatibilities are a lot less now.
Fish doesn't have anything like that, there are a few workaround, but none of them are (in my opinion) anywhere near as nice.
set output (echo captured)
echo $output
> captured
And if you wanna run a command in another dir: pushd other_dir
run_command
popd with mydir make
Although you'd want to be able to write things like with mydir make && ./bin/myprog
and parse everything to the right of `mydir' as a shell pipeline. That might be the sticking point in fish. pushd /my/path && command && popd
Both in bash AND in fish! exec bash
<paste some bash>
exec fishAnyway, have things to do before I can try again and dig in. Thought I'd post in case someone else ran into this.
[Edit] Tip: swap to a different shell before uninstalling your current shell. Sigh...lol
[1] https://github.com/fish-shell/fish-shell/issues/5497 [2] https://raw.githubusercontent.com/Homebrew/homebrew-core/ad5...
tmux.conf [1]
[1] https://gist.github.com/alexpw/7d406734f912f835d705066de8286...
The fish 3.5.0 release is not responsible for my tmux issue. False alarm.
Downgrading did somehow help me regain shell interaction, but I can't create a new session/pane, etc.
I think something else broke my tmux setup during the brew upgrade, or possibly even before it.
I respect the craftmanship, but if I'm more of a "software carpenter" why should I invest the time?
Immediately seeing if you misspelled a command because the color changes is a huge benefit if you're not super familiar with the command line.
The auto-complete and suggestions are also miles better than bash - they are automatically generated from man pages, so most commands have a usable set of completions.
The web-based config lets you easily tweak settings that would otherwise be an incomprehensible soup of PS1=3!@*(!@!@ gobbledygook.
Also, it mostly "just works" out of the box, so you really don't have to waste any time setting anything up if you don't really care.
I never understood this. It's always seemed worse - in bash/zsh I can tab complete branches/tags etc in git, pods/deployments etc in kubectl. I try that in fish and it'll just list files in my PWD
Though I still write my scripts as bash scripts (with shebang as the first line).
Pair that with tldr and it's a really good experience.
true && echo hi
false || echo hi
export VAR=1
VAR=1 somecommand
echo "$(echo substitution)"