Tools

A generation of command-line tools has been rewritten. The replacements are faster, read better and have sensible defaults — but the originals are on every machine you will ever log into, and the new ones are not.

Learn the classic. Install the modern one. That is the rule this whole section is built on. Every comparison below tells you what the newer tool changes, what it costs, and — the part most articles leave out — the cases where the old one is still the right answer.

The head-to-heads

The jobThe classicThe modern one
Search inside filesgrepripgrep
Find files themselvesfindfd
Watch a machine worktophtop and btop
List processespsprocs
Find what filled the diskduncdu and dust
Keep a session alivescreentmux
Read a filecat and lessbat
Look up how a command worksmantldr
List a directorylseza
Move between directoriescdzoxide
Read a diffdiffdelta
Find and replacesedsd
Talk to an HTTP APIcurlHTTPie
Serve a site, with HTTPSnginxCaddy

If you read one, make it tmux vs screen — losing work to a dropped SSH connection is the problem on this page that costs the most. If you install one, make it ripgrep, which changes how searching a codebase feels from the first command.

The last row is the odd one out: Caddy is a server rather than a terminal convenience, so unlike everything above it, choosing it is a decision about your infrastructure rather than your own comfort.

Tools with no classic counterpart

These replace nothing. The question is not “which one” but “is this worth your time” — so each page opens with an honest answer, including the cases where it is no.

In the terminal, every day

  • fzf — fuzzy finding, wired into your shell. The single biggest upgrade to Ctrl+R available.
  • atuin — shell history in a database instead of a text file: searchable by directory, by exit code, and synced between machines.
  • jq — querying and reshaping JSON, which every modern API makes unavoidable.
  • lazygit — the git operations nobody memorises: staging individual lines, rebasing, stash juggling.

Moving and keeping data

  • restic — deduplicated, encrypted backups with real restore points, to almost any storage.
  • rclone — rsync for cloud storage: S3, Drive, Dropbox and seventy others, one set of commands.
  • Syncthing — continuous two-way sync between your own machines, with no cloud account in the middle. Not a backup, and the page says so.

Machines, networks and services

  • Docker Compose — one file describing what runs, so the server is something you can rebuild rather than something you remember.
  • Tailscale — a private network between your machines without opening a port or configuring a VPN.
  • Ansible — for when you stop configuring servers by hand.

Before you install any of them

Three things worth knowing, because they apply to nearly every tool on this page.

  • The package is often not called what the command is. fd installs as fdfind on Debian and Ubuntu; delta comes from a package named git-delta; bat is batcat; the httpie package gives you http; and a docker-compose package, with the hyphen, is the retired version rather than the current one. Each page flags its own trap.
  • Keep the terminal tools out of scripts. Anything that has to run on a server, in a container, or on a colleague’s machine should use the classic. That rule is about convenience tools — ripgrep, bat, eza and the rest — not about the infrastructure on this page: Caddy, Compose, restic and Syncthing are meant to run unattended, and belong in your setup properly.
  • Learn the classic anyway. One day you will be on a machine that has none of these, fixing something urgent, and the only tools available will be the ones that have been there for forty years.

Coming soon

duf vs df · gping vs ping · direnv · just · age · yq