Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

One reason I haven’t picked up any of these newfangled Rust tools like bat, exa, or fd is that I can barely remember the options for the originals.

For me, anything that isn’t a drop-in replacement for the OG tools isn’t worth the friction. I use ripgrep inside VS Code but vanilla grep on the command line because of years of muscle memory.

That said, I don’t care what language a tool is written in as long as it works. One of my favorite Unix tools is GNU Stow, and it’s written in Perl. Even if these Rust tools were drop-in replacements, I probably wouldn’t bother installing them manually. As a user, the speed improvements and memory safety don’t really matter to me.

There are other languages, like Go, where memory safety is guaranteed as well, and Go’s performance is more than adequate for tooling—with the added benefit of getting more engagement from the community. So I’m not entirely convinced by this “Rust is the savior” narrative.

That said, if macOS or Ubuntu decided to hot-swap the OG tools with Rust alternatives that behave exactly like their predecessors, I probably wouldn’t complain—as long as it doesn’t disrupt my workflow.



>One reason I haven’t picked up any of these newfangled Rust tools like bat, exa, or fd is that I can barely remember the options for the originals.

But that's exactly the reason to use the newer tools -- they just make more sense -- especially fd over find. I've been using UNIX for over thirty years and find just never clicked with me.


Confession; the only way I’ve ever actually used find is just a tree walker piping to grep to actually find whatever.


fd is probably better for most tasks, but sometimes it seems more cumbersome than find. E.g., to delete all files inside a cache directory, this is the simplest syntax I could find:

fd -t f -X rm {} \; ^ cache

Which makes me really nervous, so usually I fall back to using find:

find cache -type f -delete

Maybe this is foolproof for me only because I’ve been using find for decades. Is there a version of this for fd that inspires more confidence?


I would suggest

    fd -t f . cache -X rm --
Which reads as find "any file", "matching .", "in directory cache", then "execute rm -- followed by an argument list of all found files".

This ensures even if you have filenames starting with - they won't be interpreted as options for rm. For even more sanity of mind you may want to turn on -a for absolute paths, although I don't see an example right now where using relative paths would go wrong.


Yes, that looks safer. I didn't realize I could put the `-X` option at the end. The man page says:

Usage: fd [OPTIONS] [pattern] [path]...

So, I presumed the path had to go last.


[flagged]


> This is how good things turn to crap: people want to be accommodated rather than have to learn something new.

Funny, this sounds more like an explanation for how we get stuck with crap and aren't able to move on to better interfaces.


And here I was thinking the RTFM days were over...


Have you ever tried to actually learn something from a manpage?


Yes. All the unix tools. I survived, too


It absolutely does not matter what language this tool is written in. That goes for any tool. If it’s better, use it. In this case, fd is far superior to “find” in almost every way. Sane defaults, wayyy faster, easy options (just use cht.sh if you can’t remember) To me, there is no reason to ever use “find”. If I’m on a new system, I just install fd and carry on.


> It absolutely does not matter what language this tool is written in. That goes for any tool.

Eh, there are a lot of tools where it actually does kind of matter. I suspect for a lot of invocations of tools like `fd` and `rg`, they'll be done before an equivalent written in java has even had its JVM spin fully up.

There's _tons_ of Java software, but it somehow never managed to make a dent in the CLI space.

> To me, there is no reason to ever use “find”. If I’m on a new system, I just install fd and carry on.

I guess I should finally have a look at how to replace my `find $path -name "*.$ext" -exec nvim {} +` habit … turns out it's `fd -e $ext -X "nvim" "" $path`


it tangentially matters, because cargo is so good that I use it instead of a package manager for all these fancy rust tools


Another reason to at least learn the default tooling is that often I find myself SSHing to another machine which has only the barest of default packages installed (often busybox, sometimes just a stripped-down docker container).

If I didn't know how to use "find" and "grep" (though I prefer rg) then I'd be at a disadvantage in these situations. Also command-line git.

It's why I learned to use Vim well, though I daily Emacs.


>> For me, anything that isn’t a drop-in replacement for the OG tools isn’t worth the friction.

"The uutils project reimplements ubiquitous command line utilities in Rust. Our goal is to modernize the utils, while retaining full compatibility with the existing utilities. We are planning to replace all essential Linux tools."

https://uutils.github.io/

uutils is being adopted in Ubuntu 25.10:

https://www.theregister.com/2025/03/19/ubuntu_2510_rust/


I welcome this wholeheartedly. If Ubuntu adopts that and it doesn’t need me to deal with any incompatibility, then it’s a win-win for everyone.


Does it mean unless your ip is considered “friendly“, you can’t use basic computer utils? Gnu utils seem more accessible (more freedom long term).


With the added "benefit" of not having to use GPL. Likely the main goal.


Why would that matter to Ubuntu?


If you're already proficient with grep, find, etc - there's not much reason to switch. As I said elsewhere:

I never managed to use find because I always had to look up command line arguments. I would always find a different way to solve my problem (e.g. Midnight Commander).

I use fd all the time.

A better interface makes a big difference.


> there's not much reason to switch

There are a few reasons you might still want to switch. In fd'a case:

- It respects .gitignore files (as well as similar .fdignore files that aren't git specific), which can help you find what you care about without a lot of noise, or having to pass a lot of exclude rules to find

- it can search in parallel, which can significantly reduce latency when searching large directories.

However, there are also reasons you might want to keep using find:

- fd can't do everything find can. fd is intended to replace the most common use cases with a simpler interface, but there are many less common cases that require finds greater flexibility. In fact, I still use find sometimes because of this.

- find is more likely to already be installed


By the way, FAR manager was ported to Linux quite a long time ago, but I forgot about it.

Recently I remembered and installed it. Not too hard to install (although you need to use third party repos sometimes).

And then - voila - a lot of convenience for dinosaurs from Norton Commander era like myself, who cant remember cli tools syntax that well.


I use FAR on Windows. Midnight Commander serves me well in Linux - not sure I'd prefer FAR manager. But yes, FAR is closer to Norton than mc.


Far has many nice plugins and features, that's why I prefer it. MC is still awesome, sure.


> One of my favorite Unix tools is GNU Stow

What about https://zolk3ri.name/cgit/zpkg/? A lot of improvements have been done behind the scenes apparently (rollback, proper states, atomicity, etc.), but I am not sure when he is willing to publish.

I personally use it as-is when I am compiling stuff myself and the ZPG_DST is ~/.local/. It works well for keeping track of programs that I compile and build myself.


It resonates with me wrt muscle memory and ubiquity of “standard tools” that come pre-installed in majority of *nix distros including macos.

But there is a big BUT! Lately I have to use grep/find huge nested dirs and found rg to be an order of magnitude faster. Had to get myself comfortable with retraining the muscle memory. Worth the effort.

Some of these new shiny tools are meh for my taste. Delta for instance. Or helix the editor. But it is personal. Overall I love the competition. It seems like industry once full of innovators and tinkerers is lacking some shake up.


For anything I can't remember, I just use at the command line:

? toolname <option>

Eg

? git branch

which gives me common examples of git branch

It aliases to tldr which is normally up to date with new tools.

See also cheat.sh etc.

https://tldr.sh/

I understand the point about muscle memory but I think that was more of a concern in the days before we had it easy with instant internet answers and now LLMs (eg GitHub copilot command line) doing our boring thinking for us.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: