Modern Problems Require Modern Solutions

February 17, 2023


As of July 2023, I’ve moved this information to its own page, where I hope to continue updating it.

Over on Mastodon I asked: “What modern utilities should be a standard part of a modern unixy distro? Why? I’ve got jq, pandoc, tldr and a few others on my list, but I’d love to know others.”

Here’s what came back; I’ve roughly grouped them into two categories: new utilities and improvements on the classics.

In no particular order, the new kids on the block:

  • htop, “a cross-platform interactive process viewer”. An htop-like utility called bottom also got some votes.
  • As an aside, about htop: one commenter noted that they run HTOP on a non-interactive TTY, something like control-alt-F11; so do I, and it’s great, but you must not do this on sec-critical systems. You can kill processes through htop, and that gives you a choice of signals to issue, and on most machines running systemd “systemd init” responds to SIGTRMIN+1 by dropping back into rescue mode, and that’s a backstage pass to a root shell. I have used this to recover a personal device from an interrupted upgrade that broke PAM. You must never do this on a machine that matters.

  • tmux, a terminal multiplexer. Some people mentioned screen, the classic tool in this space, but noted that it’s getting pretty long in the tooth and tmux is a pure improvement.
  • HTTPie, a CURL-adjacentish command-line HTTP client for testing and debugging web APIs.
  • glow, a markdown-on-the-command-line tool that looks great. Lowdown is also interesting.
  • fzf, a command-line “fuzzy finder” that a few people suggested.
  • tldr – simplified man pages with practical examples. The world has needed this for a long time.
  • Datamash: Gnu, I know, but an interesting command-line-math tool.
  • zsh + OhMyZsh + Alacritty: this trifecta came up a lot and it looks pretty amazing.
  • VisiData: a tabular data visualization multitool.
  • jq and jid are both fantastic tools for inspecting and manipulating JSON.
  • Tree: show you the tree structure of directories, a bit like microdosing on Midnight Commander from back in the day.
  • Gron, a tool for making JSON greppable.
  • ncdu, friend of htop and a nice disk usage display for the terminal.
  • duc, also a nice drive-use visualizer.
  • rclone, a cloud-storage data-moving multitool.
  • csvkit: if you spend a lot of time working with comma-separated values, accept no substitutes.
  • matplotlib: the upgrade over gnuplot you’ve been waiting for.
  • xidel: this looks like jq-for-html, and I’m intrigued.
  • The moreutils collection.
  • nushell: A structured-data pipeline-building shell. This looks amazing.

Improvements on “classic” tools and utilities:

  • duf a better df.
  • ripgrep, a line-oriented search tool that recursively searches the current directory for a regex pattern described as a better grep.
  • sd, a better sed.
  • fd, a better find
  • atool, a set of scripts that wrap common compressed-file-format handlers.
  • bat, a “better cat”.
  • lsd and exa, both new takes on the venerable ls.
  • There’s also zoxide: an interesting update to, of all things, cd!
  • Not really a new thing but a quality of life improvement: the “ducks” alias.
  • ag, the “silver searcher”. “Fast ack”.

So, there you go. Life in the terminal is still improving here in 2023, it’s great to see.

Update, 22/Feb/2023:

  • ijq, an “interactive jq”.
  • Broot: better navigation of directory trees.
  • dust: “du on steroids”.
  • dyff: diff for yaml.
  • miller, a CSV multitool.
  • LazyDocker and LazyGit, CLI improvements for Docker and Git respectively.
  • procs: a replacement for ps written in Rust.
  • mcfly: replaces the usual ctrl-r shell-history search handler with a more powerful tool, super cool.