The terminal has had a renaissance. Modern CLI tools are not the cryptic, arcane commands of decades past. They are fast, beautiful (yes, terminal apps can be beautiful), and often more capable than their GUI counterparts. Here are CLI tools that genuinely replace GUI applications.
File Management
yazi (Terminal File Manager)
Replaces: Finder, Nautilus, File Explorer
yazi is a blazing-fast terminal file manager written in Rust. It has rapidly become the go-to choice in 2026, surpassing ranger and lf in speed and features.
Why it works: - Async I/O — never blocks on large directories or network drives - Built-in image preview (Kitty, iTerm2, Sixel protocols) - Plugin system with a growing ecosystem - Tabs and split panes - Bulk rename with your editor - Themes and full customization via TOML config
Also consider: lf (simpler, POSIX-friendly) or ranger (Python, most plugins).
fd (Find Files)
Replaces: Find dialog in file managers
fd is a modern replacement for the find command. It is simpler, faster, and has sensible defaults.
# Find all Python files
fd -e py
# Find files containing "config" in the name
fd config
# Find and delete all .DS_Store files
fd -H .DS_Store -x rm
Why it is better: Ignores .gitignore patterns by default, uses regex, colorized output, and is 5-10x faster than find.
ripgrep (rg) — Search File Contents
Replaces: Search in Finder/IDE, grep
ripgrep searches file contents faster than anything else. It respects .gitignore, uses smart case sensitivity, and outputs results in a readable format.
# Search for a function name across a project
rg "fetchUserData"
# Search only TypeScript files
rg "interface User" -t ts
# Search with context (3 lines before and after)
rg "TODO" -C 3
Navigation and Shell
zoxide (Smarter cd)
Replaces: Typing long directory paths, GUI folder navigation
zoxide learns which directories you visit most and lets you jump to them with partial names. Think of it as autojump/z but faster (written in Rust) and smarter.
# Jump to most-visited directory matching "proj"
z proj
# Jump to a directory matching multiple keywords
z dev tools
# Interactive selection with fzf integration
zi proj
Why it is transformative: After a day of use, you never type a full path again. Works with bash, zsh, fish, nushell, and PowerShell.
Atuin (Shell History)
Replaces: Ctrl+R, shell history search
Atuin replaces your shell history with a SQLite database and provides a full-screen TUI for searching through it. Sync history across machines, search by directory, session, or time.
# Interactive history search (replaces Ctrl+R)
atuin search
# Search history for commands run in current directory
atuin search --cwd .
# Stats on your most-used commands
atuin stats
Why it matters: Shell history is one of the most underutilized developer tools. Atuin makes it searchable, syncable, and context-aware. Optional end-to-end encrypted sync between machines.
System Monitoring
btop (System Monitor)
Replaces: Activity Monitor, System Monitor, htop
btop is a gorgeous terminal system monitor. CPU usage, memory, disk I/O, network activity, and process management in a single view with mouse support.
Why it works: - Visual graphs for CPU, memory, network, and disk - Process management (sort, filter, kill) - Mouse support for a GUI-like experience - Themes and customization - Low resource usage itself - GPU monitoring support added in recent versions
Also consider: htop (simpler, available everywhere) or glances (Python, with web UI option).
duf (Disk Usage)
Replaces: Disk Utility's storage overview
duf shows disk usage in a clean, colorized table. Immediately see which drives are full and which have space.
duf
That is the entire command. It outputs a formatted table of all mounted filesystems with usage bars.
ncdu (Disk Space Analyzer)
Replaces: WinDirStat, Disk Inventory X, Baobab
ncdu scans directories and shows what is consuming space, with an interactive drill-down interface.
ncdu /home
Navigate into directories to find what is eating your disk space. Delete files directly from the interface.
Text and Data Processing
jq (JSON Processor)
Replaces: JSON viewers, online JSON formatters
jq is a command-line JSON processor. Format, filter, transform, and query JSON data.
# Pretty-print JSON
cat data.json | jq .
# Extract specific fields
cat users.json | jq '.[] | {name, email}'
# Filter by condition
cat orders.json | jq '.[] | select(.total > 100)'
Why it is essential: Every developer deals with JSON. jq makes it manipulable from the command line, in scripts, and in pipelines.
bat (File Viewer)
Replaces: cat, text file viewers
bat is cat with syntax highlighting, line numbers, and Git integration. It shows file contents the way your IDE would display them.
bat src/main.rs
Features: Syntax highlighting for hundreds of languages, line numbers, Git diff markers in the margin, automatic paging for long files.
fzf (Fuzzy Finder)
Replaces: Spotlight, Alfred, file search dialogs
fzf is a general-purpose fuzzy finder. Pipe any list into it and fuzzy-search through it interactively.
# Find and open a file
vim $(fzf)
# Search command history
history | fzf
# Kill a process interactively
kill $(ps aux | fzf | awk '{print $2}')
Why it is transformative: Once you start using fzf, you pipe everything through it. Git branches, docker containers, SSH hosts, bookmarks — anything that is a list becomes instantly searchable.
Network Tools
doggo (DNS Client)
Replaces: Online DNS lookup tools
doggo is a modern DNS client written in Go with colorized output and support for DNS-over-HTTPS and DNS-over-TLS.
doggo example.com A AAAA MX
Also consider: dig (standard, available everywhere) or q (minimal, fast DNS client).
bandwhich (Bandwidth Monitor)
Replaces: Network monitoring GUIs, Little Snitch's bandwidth view
bandwhich shows which processes are using network bandwidth in real time, broken down by process, connection, and remote address. Written in Rust for minimal overhead.
sudo bandwhich
Why it works: - Three views: by process, by connection, by remote address - Real-time bandwidth graphs per process - Identifies which application is eating your bandwidth (Docker pulls, background updates, rogue processes) - Requires sudo for packet sniffing — shows all traffic, not just what one process reports - Cross-platform (macOS, Linux)
Best for: Debugging slow connections, identifying bandwidth-hungry processes, and understanding what your machine is doing on the network. Pairs well with doggo for DNS diagnostics.
Git
lazygit
Replaces: GitKraken, Sourcetree, Tower (for terminal users)
lazygit is a terminal UI for Git that makes complex Git operations visual and fast. Stage hunks, interactive rebase, cherry-pick, and resolve conflicts — all with keyboard shortcuts.
Why it works: - Visual staging of individual hunks and lines - Interactive rebase with single-keypress actions - Conflict resolution with a visual diff - Runs everywhere (including over SSH) - Custom commands let you extend with shell scripts
See our dedicated article on Git GUI clients for a deeper comparison.
tig
Replaces: git log viewers
tig is a text-mode interface for Git. Browse commit history, diffs, and blame output in an interactive, scrollable interface.
tig # Browse commit log
tig blame file.txt # Interactive blame
tig stash # Browse stash
Productivity
taskwarrior (Task Management)
Replaces: Todoist, Things, Reminders
taskwarrior manages tasks from the command line with powerful filtering, tagging, and reporting.
task add "Fix login bug" project:backend priority:H
task project:backend list
task 1 done
Why it works for developers: Tasks live in plain text, sync with taskserver, and integrate with your terminal workflow. No context switching to a separate app.
calcurse (Calendar)
Replaces: Basic calendar apps
calcurse is a terminal calendar and scheduling application with an ncurses interface. View daily, weekly, and monthly calendars with appointments and todos.
Why it works: - Day, week, and month views with vim-style keybindings - Recurring appointments and todo priorities - Import/export iCalendar (.ics) format for syncing with Google Calendar or Apple Calendar - Configurable notifications and reminders - Data stored in plain text — easy to version control or sync with Git
calcurse # Launch the TUI
calcurse --import meeting.ics # Import calendar events
calcurse -Q --format-apt "%S - %m\n" # Print today's appointments
Best for: Developers who want basic calendar management without leaving the terminal. Not a full replacement for shared team calendars, but excellent for personal scheduling.
pass (Password Manager)
Replaces: 1Password, LastPass (for terminal users)
pass stores passwords in GPG-encrypted files organized in a directory structure. Combined with pass-otp, it handles two-factor authentication too.
pass show email/gmail
pass generate social/twitter 20
pass otp show email/gmail
CLI vs GUI: When to Use Which
| Task | GUI App | CLI Replacement | CLI Advantage |
|---|---|---|---|
| File browsing | Finder / Nautilus | yazi | Async, keyboard-driven, image previews |
| File search | Spotlight | fd + fzf | 5-10x faster, respects .gitignore |
| Text search | IDE search | ripgrep | Fastest grep, regex, smart case |
| Directory jumping | Bookmarks | zoxide | Learns your habits, partial matches |
| Shell history | N/A | Atuin | Full-text search, cross-machine sync |
| System monitor | Activity Monitor | btop | All-in-one view, GPU support |
| Disk usage | Disk Utility | duf + ncdu | Instant overview + drill-down |
| JSON viewing | Online formatters | jq | Transform, filter, pipe into scripts |
| Git operations | GitKraken / Tower | lazygit | Runs over SSH, zero startup time |
| DNS lookups | Browser tools | doggo | DoH/DoT support, scriptable |
Getting Started
Do not install everything at once. Start with four high-impact tools:
- fzf — fuzzy finding changes how you interact with the terminal
- ripgrep — faster search means you search more, which means you find things faster
- bat — drop-in cat replacement that makes reading files pleasant
- zoxide — never type a full path again after a day of use
Install them:
# macOS
brew install fzf ripgrep bat zoxide
# Ubuntu/Debian
sudo apt install fzf ripgrep bat
# zoxide: install via cargo or the install script
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
Use them for a week. Then add the next tier: yazi, fd, jq, btop, Atuin, and lazygit. Build your terminal toolkit gradually based on what you actually use.
FAQ
What are the best CLI tools to install first?
Start with four high-impact tools: fzf (fuzzy finder for interactive search), ripgrep (fastest file content search), bat (cat replacement with syntax highlighting), and zoxide (smart directory jumping that learns your habits). Install all four with brew install fzf ripgrep bat zoxide on macOS. Use them for a week before adding more tools.
Can CLI tools really replace GUI applications?
For many developer tasks, yes. Modern CLI tools like yazi (file management), lazygit (Git operations), btop (system monitoring), and jq (JSON processing) match or exceed their GUI counterparts in speed, composability, and scriptability. They also work over SSH, have zero startup time, and can be piped together. However, some tasks like image editing or complex GUI workflows are still better served by graphical applications.
What is the best terminal file manager in 2026?
yazi is the best terminal file manager in 2026. Written in Rust, it features async I/O that never blocks on large directories, built-in image preview support (Kitty, iTerm2, Sixel), a plugin system, tabs, split panes, and bulk rename. It has surpassed ranger and lf in speed and features. Install with brew install yazi on macOS.
Is lazygit better than GitKraken or Sourcetree?
lazygit is better for developers comfortable in the terminal. It offers visual hunk staging, interactive rebase, conflict resolution, and cherry-picking — all with keyboard shortcuts and zero startup time. It also works over SSH, which GUI clients cannot do. However, GitKraken and Sourcetree offer richer visualizations and are easier to learn for Git beginners.
The Bottom Line
Modern CLI tools are not about eschewing GUIs for ideology. They are faster, more composable (pipe them together), scriptable, and work over SSH. A developer who is fluent with these tools navigates codebases, manages systems, and processes data faster than one clicking through GUI applications.
The terminal is not a relic. It is a power tool that keeps getting sharper.