The Library
Find & navigate
- fd
The find replacement that respects .gitignore, colors its output, and takes the sane argument order.
- ripgrep
grep that respects your .gitignore and finishes before you lift your finger off Enter. rg is what grep dreams of being.
- fzf
A fuzzy finder for everything: pipe any list into it, pick a line, act on it. Ctrl-R will never be the same.
- zoxide
A smarter cd that learns your habits: type z partial-name and land in the right directory, ranked by frequency and recency.
- eza
ls that grew up: git status in the listing, tree view, sane dates — keep the muscle memory, drop the pain.
View & docs
- bat
cat that adds syntax highlighting, line numbers, and git gutter marks — without ever getting in grep’s way.
- glow
Read Markdown in the terminal. Width, style, and a pager when you want one.
- tldr
Community-written example pages for any command.
tldr targives you the five incantations you actually need instead of a 4,000-line man page.
Git
- delta
A git diff pager with structure and color — two config lines and every patch becomes readable again.
- lazygit
A full git TUI: stage hunks interactively, rebase interactively, read a diff without squinting, undo a bad commit. Makes git’s 200-verb CLI feel calm.
- gh
GitHub’s own CLI: issues, pull requests, releases, and the raw REST/GraphQL API — authenticated and scriptable from one command. You’ll never alt-tab to open a PR again.
Data & text
- jq
The JSON power tool: reformat API responses, rename keys, flatten config files, and pull exactly the fields you want from a 40,000-line log-dump-as-JSON.
- yq
jq for YAML: read keys, edit in place, convert to JSON — stop hand-editing indentation at 2am.
- miller
CSV and JSON from the shell. The command is mlr, not miller.
- column
The one-flag fix for ragged terminal output:
ls -l | column -tsnaps any column-shaped mess into a real table. Been in BSD since the 80s, ships everywhere. - sd
Find and replace. Pattern, replacement, file. Preview before it writes.
- xh
curl’s ergonomic younger sibling:
xh POST api.dev/users name=ada— JSON built, headers handled, output colorized. HTTPie’s spirit, Rust’s speed.
Shell workflow
- tmux copy mode
The trick most tmux users never learn: scroll, search, and copy any pane’s scrollback with keyboard navigation and a buffer you can pipe anywhere.
- atuin
Replaces your shell history with a searchable, filterable database: “show me that rsync I ran in /srv last Tuesday that failed.” SQLite under the hood, sync optional.
- direnv
Project env vars that load when you enter the directory and leave when you do.
- just
A justfile for the commands you actually type. No Make guessing.
- entr
Hand it filenames. It runs your command when one of them changes.
- shellcheck
Reads a shell script and names the bug before a space in a filename finds it.
- hyperfine
Benchmark shell commands with warmup and real statistics — settle “which is faster” without lying to yourself.
Security & backups
- openssl
The crypto Swiss Army knife you already have installed: hashes, base64, random passwords, live TLS cert inspection, self-signed certs, and file encryption — six recipes.
- age
Encrypt a file to a public key. Decrypt with the identity. No certificate dance.
- rsync
Copy the difference, not the whole tree. Dry-run before --delete.
System & disk
- btop
A system monitor that finally looks as good as the info is useful — CPU per core, GPU stats, network, disks, and process control in one terminal pane.
- procs
ps with columns you can read, and a word to filter on.
- duf
df for humans: mounts in a clean table, sane units, JSON output for scripts, and it highlights the disk that’s about to ruin your week.
- dust
du with a bar chart — see which directory is eating the disk in one glance.
- ncdu
Disk usage you can walk into. Save the scan if the tree is slow.
- lazydocker
Containers, logs, and compose in one screen. Needs a running Docker daemon.