~/home~/résumé~/blog~/contact
Share
  1. Home
  2. /
  3. Blog
  4. /
  5. Guides
  6. /
  7. 20 CLI Tools You're Not Using Yet

20 CLI Tools You're Not Using Yet

CLIDeveloper ToolsProductivity

April 3, 2026

  • ›Workflow and Automation
  • ›Files, Text, and Data
  • ›System and Network Visibility
  • ›Git and Code

These 20 command line tools have thousands of GitHub stars but rarely make the usual "best CLI tools" lists. Each one replaces a frustrating default with something faster, clearer, or smarter.

If you came here from the Best CLI Tools for Mac, Linux, and Windows post, consider this the follow-up. That post covers the consensus picks: fzf, ripgrep, bat, lazygit, and the rest of the standard toolkit. This one covers the cli tools you're not using yet, the ones that quietly solve problems you've been working around for years.

Workflow and Automation#

These tools eliminate repetitive typing and make your dev loop tighter. Most developers live in Makefile or shell scripts for task running. These are better options.

just#

just is a command runner like make, but designed for running project-specific commands rather than building software. No .PHONY declarations, no tab-indentation traps, no implicit rules surprising you at the wrong time.

You define recipes in a Justfile and run them with just <recipe>. Cross-platform, no dependencies beyond the binary itself. At 32.6k stars it's well past the experimental stage.

brew install just

direnv#

direnv automatically loads and unloads environment variables from a .envrc file when you cd into a directory. Walk into a project folder and $DATABASE_URL is set. Walk out and it's gone.

If you've ever sourced a .env file by hand, forgotten to undo it, and then spent 20 minutes debugging why your staging credentials are being used in production, direnv is the fix. Works with any shell, no runtime overhead.

brew install direnv

After installing, add the hook to your shell config: eval "$(direnv hook bash)" (or zsh/fish equivalent).

entr#

entr watches a set of files and re-runs a command when any of them change. Uses inotify, not polling. The latency is real.

The cult following around entr comes from how simple it is. No config file, no daemon, no setup. Pipe filenames into it and give it a command.

ls *.go | entr go test ./...

That's the whole API. apt install entr on Debian/Ubuntu, brew install entr on Mac.

mcfly#

mcfly replaces Ctrl+R shell history search with a neural network that understands context. It tracks which directory you're in, what exit codes your commands returned, and how recently each command ran.

After a week of use, mcfly's suggestions are measurably better than reverse-i-search. The model runs locally, no data leaves your machine. 7.7k stars.

brew install mcfly

viddy#

viddy is a modern replacement for watch with one killer feature: time-machine mode. You can pause and rewind through past command outputs instead of watching them scroll by.

Useful for anything where you're watching a metric or log line and want to go back to what you saw 45 seconds ago. 5.3k stars.

cargo install viddy

Files, Text, and Data#

Modern terminal tools for navigating, viewing, and transforming files. These cover the gap between ls/cat/sed and reaching for a full GUI.

Here's how these lesser-known tools stack up by GitHub stars. They're more popular than most developers expect:

GitHub Stars (thousands) for Tools You Probably Haven't Heard Of

yazi#

yazi is a terminal file manager written in Rust with async I/O, image previews, Lua plugins, and vim-style navigation. 35.9k stars and the fastest-rising file manager in the terminal space right now.

People who've used ranger or lf consistently say yazi is faster. The async design means large directories load without blocking. Image previews work in supported terminals (Kitty, iTerm2, Ghostty).

brew install yazi

glow#

glow renders markdown in your terminal with syntax highlighting, word wrap, and a pager interface. From the Charm team, the same people behind Bubble Tea.

The use case is simple: you're in a repo and want to read the README without leaving the terminal. Or you've got a local markdown file and want to preview it quickly. 24.1k stars.

brew install glow
# then: glow README.md

csvlens#

csvlens is less for CSV files. Open a CSV and get interactive scrolling, column-aware search, and filter support. No more squinting at raw comma-separated text.

brew install csvlens
csvlens data.csv

Small project (3.7k stars) but it fills a specific gap that no other tool I've found handles cleanly in the terminal.

sd#

sd is a find-and-replace tool that does what you actually want sed to do. Capture groups use $1 instead of \1. Regex syntax matches what you already know from JavaScript or Python.

7k stars and 12x faster than sed on large inputs.

cargo install sd
# Replace all instances across a file:
sd 'old_function_name' 'new_function_name' src/main.rs

grex#

grex generates regular expressions from example strings. Give it a list of strings that should match and it produces a regex that covers all of them.

brew install grex
grex abc123 def456 ghi789
# outputs: ^[a-i][b-h][c-i]\d{3}$

At 8.1k stars, it's one of those tools where you'll forget it exists until the one moment you need it, then wonder how you managed without it.

System and Network Visibility#

These hidden gem CLI tools answer the questions you keep asking:

  • Which process is eating my bandwidth?
  • Where did all my disk space go?
  • Is my network latency spiking or steady?

lazydocker#

lazydocker is a full terminal UI for Docker and Docker Compose from Jesse Duffield (who also built lazygit). View logs, restart containers, exec into shells, check stats, all without typing docker commands.

At 50.5k stars, it's the most popular tool on this entire list and still somehow absent from most "underrated cli tools" roundups.

brew install lazydocker

duf#

duf replaces df with a color-coded disk usage display that includes bar graphs and separates local drives from network mounts. 14.9k stars.

brew install duf

The output is readable at a glance in a way that df -h never quite managed. Good candidate for adding to your login scripts.

dust#

dust replaces du with a visual tree that shows disk usage by directory, sorted and indented so you can actually see where space is going. 11.5k stars, written in Rust.

brew install dust
dust ~/Documents

The tree layout means you don't have to pipe du through sort and head to find the big directories. It just shows you.

gping#

gping runs ping but plots latency in a real-time ASCII graph in your terminal. You can ping multiple hosts simultaneously and watch the lines diverge. 12.4k stars.

brew install gping
gping google.com cloudflare.com 1.1.1.1

Diagnosing intermittent connectivity issues is much faster when you can see the pattern instead of reading numbers.

bandwhich#

bandwhich shows current bandwidth usage broken down by process and by connection. Every connection your machine has open, with live transfer rates. 11.7k stars.

cargo install bandwhich
# Requires elevated permissions:
sudo bandwhich

If you've ever wondered which process is saturating your network, bandwhich answers it in about three seconds.

Git and Code#

Lesser known command line tools for version control, benchmarking, and pipelines. If you use the terminal for your git workflow, these are the cli tools you're not using that will make the biggest difference.

gitui#

gitui is a terminal UI for git written in Rust. Benchmarks show it uses 2x less CPU and 15x less RAM than lazygit on large repositories. 21.7k stars.

If you're on a large monorepo and lazygit feels sluggish, gitui is worth trying. Same concept, tighter resource usage.

cargo install gitui --locked

difftastic#

difftastic is a structural diff tool that understands syntax instead of just comparing lines. It knows that moving a function's closing brace doesn't mean the function changed. 24.9k stars.

Terminal code reviews become tolerable when the diff tool stops flagging formatting changes as meaningful. difftastic integrates with git via GIT_EXTERNAL_DIFF.

cargo install difftastic
# Wire it into git:
git config --global diff.external difft

hyperfine#

hyperfine is a statistical CLI benchmarking tool. It runs warmup iterations, measures variance, and exports results to CSV or JSON. 27.8k stars.

Useful any time you want to compare two commands and get a real answer instead of timing them by hand.

brew install hyperfine
hyperfine 'grep -r pattern .' 'rg pattern'

nushell#

nushell is a shell where pipelines carry structured data instead of raw text. ls | where size > 10mb | sort-by modified works because ls returns a table, not a string. 38.9k stars.

You don't have to switch to it full-time. Running it occasionally for data wrangling tasks where you'd normally reach for awk or Python is already useful. See more on prompt-style workflows for how structured shells fit into modern dev flows.

brew install nushell

pv#

pv (Pipe Viewer) adds a progress bar and transfer rate to any pipeline. It's been around for years, has almost no GitHub stars, and was still the number-one "how did I not know this" tool in a recent Lobsters thread.

apt install pv
# Progress bar on a large file copy through gzip:
pv large-file.tar | gzip > large-file.tar.gz

That's the whole pitch. Pipe something through it and you get bytes transferred, current rate, and an ETA.

Install All 20 Tools

brew install just direnv entr mcfly yazi glow csvlens grex lazydocker duf dust gping gitui difftastic hyperfine nushell pv. For sd, viddy, and bandwhich, use cargo: cargo install sd viddy bandwhich. Cargo requires the Rust toolchain: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
sudo apt install entr pv. Install Rust tools via cargo: cargo install yazi-fm sd grex bandwhich gitui difftastic hyperfine viddy dust. For just, duf, glow, lazydocker, mcfly, nushell, csvlens, gping, and direnv, check each project's GitHub releases page or use Homebrew on Linux (Linuxbrew works on most distros).
Most of these are in the official repos or AUR. pacman -S just direnv entr pv duf dust gping nushell hyperfine difftastic. Use yay or paru for AUR packages: yay -S mcfly viddy yazi glow csvlens lazydocker gitui sd grex bandwhich.

If you want the cli tools you're not using to actually stick, install one category at a time. Workflow tools this week, files and data tools next week. The muscle memory needs to build before you add more.

The ones with the fastest payoff in my experience:

  • direnv removes an entire class of environment variable bugs
  • entr transforms your edit-compile-test loop
  • difftastic makes git reviews feel less like archaeology

Start there.

Share