32blogby StudioMitsu

The Developer's CLI Toolkit: A Complete Map

From file operations to text search, downloads, and shell customization. Every CLI tool developers should know, organized as classic vs modern alternatives.

8 min read
On this page

When you first open a terminal, your vocabulary might be limited to ls and cd. But the CLI world is packed with tools that can dramatically change how fast you work — if you know they exist.

This article organizes the CLI tools every developer should know, by category. Classic tools that have been around since the '90s sit alongside their modern Rust-based replacements, so you can see what's changed and why.

File Operations & Navigation

The fundamentals. Listing files, moving around, copying, deleting — everything starts here.

Classic: ls / cd / cp / mv / rm

Part of GNU coreutils (latest: 9.10, February 2026). Pre-installed on every Linux distribution.

bash
ls -alh          # Detailed listing with human-readable sizes
cd ~/projects    # Change directory
cp -r src/ dst/  # Copy directory recursively
mv old.txt new.txt  # Rename / move
rm -rf build/    # Delete directory (use with caution)

Modern: eza + zoxide

eza (v0.23.4) is a Rust replacement for ls. Color output, Git status integration, and tree view come built-in.

bash
eza -la --git          # List with Git status
eza --tree --level=2   # Tree view (2 levels deep)

zoxide (v0.9.9) replaces cd. It remembers directories you've visited and lets you jump to them by typing a fragment of the path.

bash
z proj     # Jump to ~/projects (if you've cd'd there before)
zi         # Interactive selection
powershell
# Inside WSL, follow the Linux steps
# Or directly in PowerShell:
winget install eza-community.eza
winget install ajeetdsouza.zoxide

Text Search & Processing

Searching logs, editing config files, processing JSON. Text manipulation is a developer's daily bread.

Classic: grep / sed / awk

bash
grep -rn "TODO" src/           # Recursive search with line numbers
sed -i 's/old/new/g' file.txt  # In-place find and replace
awk '{print $1, $3}' data.tsv  # Extract columns 1 and 3

grep is one of the most-used commands, but it slows down noticeably on large codebases.

Modern: ripgrep + fd + bat + jq

ripgrep (v15.1.0) is a Rust replacement for grep. Respects .gitignore by default and is significantly faster on large repositories.

bash
rg "TODO" --type js          # Search only JS files
rg "function \w+" -c         # Count matches

fd (v10.3.0) replaces find. Simpler syntax and .gitignore-aware by default.

bash
fd "\.mdx$" content/         # Find .mdx files
fd -e json -x jq '.version' # Find JSON files and process with jq

bat (v0.26.0) replaces cat. Syntax highlighting, line numbers, and Git diff integration out of the box.

bash
bat src/index.ts             # Display with syntax highlighting
bat -d file.txt              # Show only Git changes

jq (v1.8.1) is the Swiss army knife for JSON. Essential for working with API responses.

bash
curl -s https://api.github.com/repos/jqlang/jq | jq '.stargazers_count'
cat package.json | jq '.dependencies | keys'
powershell
# Inside WSL, follow the Linux steps
# In PowerShell:
winget install BurntSushi.ripgrep.MSVC
winget install sharkdp.fd
winget install sharkdp.bat
winget install jqlang.jq

Download & Networking

Fetching files, calling APIs, communicating with remote servers.

wget — The Batch Download Workhorse

Excels at recursive downloads, interrupted transfer resumption, and site mirroring. The go-to tool for fetching files on a server.

bash
wget -c https://example.com/large.iso    # Resume interrupted download
wget -i urls.txt -P ~/downloads/         # Batch download from URL list
wget --mirror --convert-links https://example.com/  # Mirror a site

Latest versions: wget 1.25.0 / wget2 2.2.1. wget2 includes a fix for CVE-2025-69194 (CVSS 8.8) — update if you're using it.

→ Details: wget Complete Guide

curl — The Universal HTTP Tool

Where wget specializes in downloads, curl handles all HTTP communication. API calls, header inspection, file uploads — it does everything.

bash
curl -s https://api.example.com/data | jq '.'   # Fetch API and format JSON
curl -I https://example.com                       # Get headers only
curl -X POST -d '{"key":"value"}' -H "Content-Type: application/json" https://api.example.com

Latest version: curl 8.18.0 (January 2026). Includes fixes for 3 CVEs discovered by AI. Run curl --version to check yours.


Shell Customization

alias — Command Shortcuts

Shorten long commands you type repeatedly. Shell efficiency starts here.

bash
alias gs='git status'
alias dc='docker compose'
alias ll='ls -alh --color=auto'

→ Details: The Complete Guide to Aliases

Choosing a Shell: bash vs zsh vs fish

ShellKey Trait
bashAvailable everywhere. Best script compatibility
zshbash-compatible + powerful completions. macOS default
fishWorks great out of the box. Not bash-compatible

If you use zsh, the oh-my-zsh git plugin alone adds 150+ aliases.

fzf — Fuzzy Find Everything

fzf (v0.70.0) is an interactive fuzzy finder. File selection, command history search, Git branch switching — it plugs into everything.

bash
# Fuzzy-find a file and open it in vim
vim $(fzf)

# Search command history (enhanced Ctrl+R)
# After installing fzf, Ctrl+R uses it automatically
powershell
# Inside WSL, follow the Linux steps
winget install junegunn.fzf

Development Workflow

tmux — Terminal Multiplexing

tmux (v3.6a) manages multiple panes and windows inside a single terminal. Keeps sessions alive over SSH, making it essential for server work.

bash
tmux new -s work           # Start a session named "work"
# Ctrl+b % — Split horizontally
# Ctrl+b " — Split vertically
# Ctrl+b d — Detach from session
tmux attach -t work        # Reattach to session
powershell
# Inside WSL, follow the Linux steps
# Not natively available on Windows

ssh / rsync — Remote Server Operations

bash
ssh user@server             # Remote connection
ssh -L 8080:localhost:3000 user@server  # Port forwarding
rsync -avz ./dist/ user@server:/var/www/  # Sync only changed files

Git — Version Control

Git needs no introduction, but there are tools that make CLI Git faster.

bash
# lazygit — Git TUI inside your terminal
# delta — syntax-highlighted git diff
git diff | delta

Modern Alternatives (The Rust Generation)

There's a growing wave of projects rewriting classic GNU tools in Rust. In 2026, Ubuntu is moving forward with plans to replace GNU coreutils with the Rust-based uutils implementation.

ClassicModernLanguageKey Improvement
lsezaRustColor, Git integration, tree view
catbatRustSyntax highlighting, line numbers, pager
grepripgrepRustSpeed, .gitignore support
findfdRustSimple syntax, fast
cdzoxideRustLearning-based jump
sedsdRustSimpler regex syntax
dudustRustVisual disk usage
topbottomRustModern system monitor

You don't need all of them. Start with ripgrep + fd + bat — those three will immediately show you the difference. Installation instructions for each tool are in the relevant sections above.


Wrapping Up

CategoryLearn FirstTry Next
File operationsls, cd, cp, mveza, zoxide
Text searchgrep, findripgrep, fd, bat
JSON processingjq
Downloadswget, curl
Shell configalias, .bashrcfzf, oh-my-zsh
Developmentgit, sshtmux, lazygit

CLI skills transfer across operating systems. GUI apps come and go, but commands stay.

Bookmark this page and come back whenever you want to try something new. Detailed guides for each tool are being added over time.