16 CLI Tools That Replaced My GUI Habits
Photo by Jake Walker / Unsplash
I collected CLI tools over the past couple years like some terminal-poisoned goblin, so I finally threw them into a repo: Awesome-Cli. Here's what made the cut and why.
System Monitoring
btop is what happens when htop gets a visual overhaul. CPU graphs, memory, network stats, all rendered in surprisingly pretty terminal graphics. I mostly open it to feel like I'm in a movie while my fans spin up.
Getting Around
zoxide learns your most-used directories. Type z proj and it figures out you meant /home/you/documents/work/projects/that-one-thing. Saves a lot of tab-completing through nested folders.
eza is ls with icons, git status indicators, and colors that actually convey information. Small upgrade, but once you're used to it, plain ls output looks like garbage.
Shell Prompt
starship replaces your default prompt with something that shows useful context: git branch, language versions, exit codes, whatever you configure. Fair warning, you will lose an evening to the config file. Worth it though.
Disk and Search
duf shows disk usage in clean, readable tables instead of whatever df -h spits out. Color-coded bars, sensible layout. Does one thing well.
fzf is a fuzzy finder you can pipe anything into. Files, command history, git branches, whatever. The ctrl+r integration for shell history search is probably the single biggest quality-of-life improvement I've made to my terminal.
Reading Files
bat is cat with syntax highlighting and line numbers. Nothing revolutionary, just nicer to look at when you're dumping a config file to check something.
tldr gives you practical command examples instead of the 900-line man page. When I just need to remember the tar flags for the 50th time, this is faster.
File Management
yazi is a terminal file manager that's actually fast. Supports image previews if your terminal does. I use it when I need to move stuff around and don't want to type mv fifteen times.
Shell History
atuin makes your shell history searchable and syncable across machines. That weird awk one-liner you wrote six months ago? You can actually find it again.
The Lazy Suite
These three share a philosophy: TUI wrappers that let you see what you're doing instead of memorizing flags.
lazygit for git. Staging, committing, rebasing, all visible. Good for when the repo is in a weird state and you need to untangle it.
lazydocker for Docker. Containers, images, logs, all in one view. Beats typing docker ps constantly.
lazysql for databases. Browse tables, run queries, no Electron app hogging 400MB of RAM.
The Obvious Ones
nvim is a text editor. I use it btw. The config rabbit hole is real, budget your time accordingly.
tmux for terminal multiplexing. Multiple panes, sessions that persist when you disconnect. Essential for remote work.
Bonus
linutil is Chris Titus Tech's grab bag of Linux utilities. Handy scripts for common tasks.
Full list lives at github.com/spaceCabbage/Awesome-Cli
PRs welcome if you've got suggestions.
My Terminal Setup: Dotfiles That Actually Work Across Machines
Newer →VPNs Won't Save You (But Here's What Might)