fyi,
exa
is unmaintained, although there is a maintained fork calledeza
(repo)Here’s a slightly better list. Call out to nushell and fish, my two modern shell favourites.
I just learned about nushell a few days ago and it blew me away. I’ve always wanted a shell that made manipulating data easier, and with my programming background the functional style just clicked instantly. Been daily driving it for a couple weeks, definitely recommend folks give it a go.
It’s incredible, isn’t it? I’m already working on plugins for a variety of tasks so I can fire things off for malware analysis, push tables to data stores, and more. It’s such an obvious evolution of POSIX, I’m surprised it’s not already a standard across all shells.
Yup, it legit changed how I think about interacting with a shell. I’ve always been kinda terrible at actually learning stuff like awk, sed and company on the long term without needing half a dozen Google searches before they mostly do what I want so actually being able to perform complex operations on whatever input on the fly feels incredible!
It helps so much with API development as well, I’ve been using it on a side project and having a built-in http client plus auto JSON parsing feels ergonomic in ways that just make me giddy lol.
Fish is overrated imo.
Nushell is better but not quite what I’m looking for.Fish is no longer overrated.
eza because exa is unmaintained.
“bat” seemed interesting, until I remembered that I’d just do a “git diff” if I wanted to see a diff. The rest do not strike me as substantially better than what they’re trying to replace. Enjoy them all as you will, but I would recommend refraining from describing them as “modern unix” in the presence of any old-timers.
Quite a few are just better, and others have the chance to get better because they’re actively accepting new features contributions.
One I personally use:
- delta Provides a better diff for code than git’s diff tool (even after trying all of git’s diff algorithms)
- ripgrep So much faster than grep. Also had great include/exclude file filtering, easier to use than grep’s
- jq Easy to exact json info. I tend to use rq too for yaml
- instead of mcfly I use atuin, which is another alternative bash history. I really didn’t think I’d like it, but it’s been a big productivity boon
- curlie/httpie A really nice alternative to something like postman when debugging HTTP connections. I use httpie rn but might switch because I’m so much more familiar with curl’s flags, but like the formatted output. There’s a few others I use that aren’t on the list too.
It’s totally fine to not want to change what’s working for you, but if you do that too long you could miss out on something that just works better in your workflow. Give em a go and complain after you switch back.
Well, I did overlook jq in there. Not the first time I’ve forgotten that it exists.
I use bat as a drop in replacement for cat (overriding cat in my .zshrc) by using
--style=plain --paging=never
on the bat command. Basically looks and works the same as cat, except with syntax highlighting.
How come half of the commands in this readme were written in Rust
This is a really good list. I already use the majority of them. Thanks!
These programs are actually really cool and I un-ironically want to use them.