modern unix
modern unix
foss
modern unix
foss
fyi, exa
is unmaintained, although there is a maintained fork called eza
(repo)
Here's a more exhaustive list: https://github.com/TaKO8Ki/awesome-alternatives-in-rust
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.
Sometimes I do some one liners when in a shell, and neither of these are POSIX compliant. That's why I just stick to my customised zsh that basically does the same as fish.
You’re absolutely right. Fish isn’t really for scripting but is great for purely interactive use.
Nushell however offers a totally different approach to “scripting” and I can achieve far more in a nushell one-liner than I ever could in a POSIX shell as it’s far more comparable to Python Pandas than a shell.
For instance I can plot a line chart of file modifications over time directly in the shell with a single line of nushell. It’s mind blowing.
Fish is overrated imo.
\
Nushell is better but not quite what I'm looking for.
Fish is no longer overrated.
"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:
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.
I love jq, but the rest doesn't appeal too much to me -- I've been in the game for so long, so I already memorize most useful flows in the normal corelibs. And because I won't always have the alternative to install different stuff, I try to not depend on lots of non-standard software. But I'm glad you like it, FOSS is awesome.
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.
Bat also adds lots of stuff to the output. Is there a clean print functionality without the extra numbers?
Edit: but with the parameters its great!
--style=plain
will do it!
Most of that stuff is MIT/Apache licensed unlike programs from GNU. Interesting.
It would be cool if the GNU project sponsored a new updated 'standard' set of tools though.
Why would they? The “old” tools work very well, are well known and are likely used in millions of scripts.
The new tools will have more bugs, unfamiliar options and unexpected behavior (due to them being new), and the improvements current “modern” alternatives bring to the table are often very minor.
Probably because that's basically the default license rust projects use and a lot of this stuff is made in rust.
just 2 in the list were GPL licensed :/
I know that MIT is no Copyleft license, but is that really a problem?
not actually. I also use many programs that are MIT or BSD licensed.
it's just that replacing working GPL'd programs with MIT ones might be more appealing to corporations than someone like me who cares as much about ideology as the programmes themselves.
I don't wish to see services being sucked for their value by corporates who give little to nothing in return. history is replete with such instances.
eza because exa is unmaintained.
Great list, but a couple could be added:
Btop++ is general better since it's written in c++ and is faster
How come half of the commands in this readme were written in Rust
Rust specializes in making parallel processing secure and approachable, so it's going get used in problems where parallel processing and efficiency matter.
Rust is also now allowed to be used in the Linux kernel for the same reasons, which is exciting!
Cause it's awesome?
Are these built to handle pipes? If I bat a file and redirect it to a file, does it work as expected or does it add in the escape sequences for the colors, for example?
bat foo | bar
behaves like cat foo | bar
same with >
and such.
Oh broot
is really cool. Better than exa --tree
, because it has that sweet "xxx hidden" thing. This command makes it pretty close to tree
, as it prints it out rather than present you with an interactive screen, which I'm not interested at:
shell
broot --sort-by-type-dirs-first --cmd :print_tree
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.