Skip to content

Comment on Htop 3.0

Comments

htop has been on my list of applications I must install immediately on every system for at least 14 years now. I am always a bit shocked when I am reminded about how young of a project it is. I think the only younger tool that I always install is jq.

There's a few I now prefer over their old counterparts: fd, ag, bat.

fd and ag (or rg) just do what I expect them to, I don't need to think about how to use them. Both find and grep's syntax trip me up, even after 20 years of using them.

What's bat do? (I'm on board with you on fd and rg)

bat is essentially a fancier version of cat. It's fully backward compatible but supports syntax highlighting, paging and has git integration.

It's written by the same developer as fd

https://github.com/sharkdp/bat

Bat is a cat replacement with syntax highlighting, formatting options; it works great with fd. What's rg?

ripgrep (the binary name is rg) is a faster grep written in Rust.

https://blog.burntsushi.net/ripgrep/ explains in detail _how_ it's so fast, and is a great reading on practical performance engineering.

The interface is nearly 1:1 with `ag` (and the older `ack`). One notable difference is that ag enables `--smart-case` by default, so it treats an all-lowercase pattern as case-insensitive, while `rg` doesn't, you need an explicit `rg -i`. (or set it in a config file, but I'd rather not learn defaults that won't work out-of-the-box on other machines).

Note that -i will always enable case insensitivity. The -S flag will enable the same kind of smart case behavior that ag has (and with fewer bugs).

For me the interface is the draw rather than speed. I use ag rather than rg, but doing `ag search-term path` is how I'd expect it to work. Plus, automatically ignoring .git and other metadata files out of the box is a time saver.

I love jq. Since I just learned this today, I'll mention that python comes with a JSON pretty-printing utility that can be used on the CLI:

  echo '{"some_json": "value"}' | python -m json.tool

Probably worth mentioning in this context that the pygments[1] module adds syntax coloring, as well,

  ... | python -m json.tool | python -m pygments -l json
or, path permitting,
  ... | python -m json.tool | pygmentize -l json
[1] https://pygments.org

Oh, and

  python -m http.server 12345
serves files in the current directory over HTTP on port 12345.

I'll stop now, but I love how Python module developers add these "hidden" command-line features.

P.S.: You can — and, at this point in history, probably should — s/python/python3/ in all these examples.

Glad to hear this! I always install htop on all Lunux i install! So cool to read about the backstory :) Good job!

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.