You can absolutely keep doing everything the slow way.

You can open Postman every time you want to inspect JSON. You can scroll endlessly through logs.

You can cd your way through six nested folders like it's 2009. You can SSH into a flaky network connection and pray it doesn't drop.

Or you can learn a few tools that remove friction.

This isn't about being a terminal purist. It's not about "real developers use the CLI."

That argument is tired.

This is about speed.

Here are 33 CLI tools that are actually worth trying.

Click here to read for free

None
Edit Canva

1. ripgrep (rg)

If you're still using grep for large codebases, fine. It works.

But rg is faster and cleaner.

Want to find the word off across a parent directory but not match offer or authors?

rg -w off

It searches the entire tree. Fast.

If I only want it inside a specific project? Same command. Different directory.

It tells you exactly where it appears. Twice in a changelog. Twice in off.go. Done.

No IDE indexing. No waiting.

And yes, it's written in Rust. That's not the reason it's good. It's just fast.

2. tree

Sometimes you just want to see the structure.

tree -L 3

Three levels deep. Clean. Visual.

It's basic. But when you're navigating unfamiliar repos, it saves mental energy.

3. fd

find is powerful.

It's also annoying.

fd is simpler and usually enough.

You're not searching file contents like rg. You're searching filenames.

Looking for all go.mod, pom.xml, or Cargo.toml files? fd does that without you memorizing a novel of flags.

Is it as powerful as find? No.

Does it matter for 90% of use cases? Also no.

4. fzf

This turns any list into an interactive filter.

Pipe output into fzf, start typing, and narrow it instantly.

Search for go.mod from a giant list? Type a few characters. It's there.

You can combine it with rg, docker logs, whatever.

Scrolling is slow. Filtering is not.

5. bat

cat prints files.

bat prints files with syntax highlighting and line numbers.

That's it.

It's not revolutionary. It's just nicer to read.

6. curl

You need this.

Silent mode

curl -s https://api.github.com

Debugging headers?

curl -i https://api.github.com

It's your quick HTTP client inside the terminal.

7. jq

JSON is everywhere. APIs. Logs. Configs.

Instead of copying JSON into a formatter, pipe it

curl -s https://api.github.com/repos/user/repo | jq

Want the stargazer count?

jq '.stargazers_count'

Clean. Scriptable. Done.

8. docker compose

If your app depends on Redis and Postgres, you need reproducibility.

docker compose up -d

Check status

docker compose ps

Follow logs

docker compose logs -f

Then combine it with rg or fzf to filter warnings or errors.

Logs are useless if you can't search them fast.

9. lazydocker

Yes, it's a TUI.

Yes, it's "lazy."

It shows containers, images, volumes, logs, navigable with a menu.

If you don't want to remember every Docker command, this is fine.

10. systemctl

Start. Stop. Restart. Status.

Without guessing.

You shouldn't be randomly rebooting services hoping things fix themselves.

11. lsof

Something already using port 8099?

lsof -i :8099

Now you know the PID.

Kill it if needed.

Ports don't get "mysteriously blocked." Something is listening.

12. ss

Socket statistics.

System-wide view of what's exposed.

ss -ltn

If you don't know what ports are open, you probably should.

13. ps / procs

ps aux works.

procs makes it readable. With color. Sorting by CPU.

You don't need it. But once you use it, you won't go back.

14. watch

Run something every interval.

watch ss -ltn

See changes as services restart.

Good for observing behavior without manually rerunning commands.

15. ip

Check interfaces

ip a

Check routes

ip r

If networking feels broken, confirm assumptions.

16. dig

DNS debugging.

dig github.com

Or short output

dig +short github.com

Given how often DNS issues happen, this is practical.

17. mtr

Combines ping and traceroute.

Real time packet loss and latency.

Better visibility into network instability.

18. ncdu

Interactive disk usage explorer.

Navigate directories and see what's eating space.

When a drive fills up, guessing is pointless.

19. tldr

Man pages are comprehensive.

tldr gives practical examples.

Sometimes you don't need theory. You need syntax.

20. shellcheck

Lint your shell scripts.

Unused variable? It tells you.

Broken deploy scripts are avoidable.

21. perf

Performance statistics.

perf stat ./app

CPUs utilized. Instructions per cycle.

Numbers you might not fully interpret, but useful when profiling seriously.

22. git grep

Search only tracked files.

git grep health

It ignores untracked noise.

Useful inside real repos.

23. git worktree

Multiple branches checked out simultaneously.

Hotfix in one directory. Feature work in another.

Less context switching.

24. git bisect

Binary search through commits to find where a bug was introduced.

If you've never used it, you're manually guessing.

25. git diff + delta

git diff works.

delta makes it readable.

Better formatting. Easier on the eyes.

Not essential. Just better.

26. lazygit

Visual Git interface in terminal.

See staged vs unstaged. Reword commits. Squash. Bisect.

Unpopular opinion: every developer should use it at least once to understand Git's model better.

27. GitHub CLI (gh)

List issues

gh issue list

List PRs

gh pr list

Review and merge from terminal.

Many people don't even know this exists.

28. OpenVPN

Encrypted tunnels.

Access private infrastructure or labs securely.

It's not flashy. It's foundational.

29. mosh

Like SSH.

But survives bad networks.

If your Wi‑Fi drops constantly, this matters.

30. tmux

Terminal multiplexing.

Multiple panes. Persistent sessions.

Feels like workspaces, but inside the terminal.

31. zoxide

Jump to directories based on frequency.

Instead of

cd repos/rust/project

You type

z project

Speed compounds.

32. eza

Modern ls.

Icons. Tree view. Better defaults.

eza --tree -L 3

Cleaner output.

33. fastfetch

Shows system internals.

Not essential.

Just useful and sometimes fun.

Finally

You don't need all 33.

You don't need to memorize every flag.

But if even three of these remove friction from your workflow, that compounds over months and years.

Or you can keep doing everything the slow way and hope AI types it for you.

Your call.