Skip to content
Course/Customizing Your Terminal/Recommended Tools

Recommended Tools

Discover modern terminal tools that supercharge your workflow: fzf, ripgrep, bat, eza, and zoxide.

The classic Unix commands have served developers well for decades, but a wave of modern tools has emerged that are faster, more intuitive, and better-looking. These tools are drop-in replacements you can adopt one at a time. Here are five that are worth installing immediately.
fzf — Fuzzy Finder
Replaces: manually typing file paths, Ctrl+R history search
fzf is an interactive fuzzy finder that lets you search through any list — files, command history, git branches, processes — by typing a few characters. It matches fuzzily, so typing srcidx finds src/index.js. It hooks into Ctrl+R to give you a searchable, visual history browser instead of cycling through commands one at a time.
# Install
brew install fzf         # macOS
sudo apt install fzf     # Ubuntu/Debian

# Usage examples
vim $(fzf)               # fuzzy-find a file and open it
cd $(find . -type d | fzf)  # fuzzy-find a directory and cd into it
export FZF_CTRL_R_OPTS="--preview 'echo {}'"  # enhanced history search
ripgrep (rg) — Search File Contents
Replaces: grep -r, grep --include
ripgrep is a line-oriented search tool that recursively searches directories for a regex pattern. It's significantly faster than grep — often 5-10x — because it respects .gitignore, skips binary files, and uses parallelism. The output is color-highlighted with file names and line numbers by default.
# Install
brew install ripgrep     # macOS
sudo apt install ripgrep # Ubuntu/Debian

# Usage examples
rg "TODO"                # search all files for "TODO"
rg -i "error" --type js  # case-insensitive search in .js files only
rg "function" -C 3       # show 3 lines of context around matches
bat — A Better cat
Replaces: cat, less
bat is a cat clone with syntax highlighting, line numbers, git integration, and automatic paging. When you bat a file, code is highlighted in color based on the language, modified lines are marked, and long files automatically page. It makes reading files in the terminal genuinely pleasant.
# Install
brew install bat          # macOS
sudo apt install bat      # Ubuntu/Debian (may need: batcat)

# Usage examples
bat index.js             # syntax-highlighted file viewer
bat --diff README.md     # show git changes
bat -l json data.txt     # force JSON highlighting

# Set as default man page viewer
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
eza — A Modern ls
Replaces: ls
eza (the maintained successor to exa) is a modern replacement for ls. It adds color-coded file types, git status indicators, tree views, icons, and better human-readable sizes. The output is immediately more scannable than plain ls.
# Install
brew install eza          # macOS
sudo apt install eza      # Ubuntu/Debian

# Usage examples
eza -la                  # long listing, all files (like ls -la but prettier)
eza --tree --level=2     # tree view, 2 levels deep
eza --git --long         # show git status for each file
eza --icons              # show file-type icons (needs Nerd Font)

# Recommended alias
alias ls="eza --color=always --group-directories-first"
zoxide — Smarter cd
Replaces: cd
zoxide learns which directories you visit most often and lets you jump to them by typing just a few characters. Instead of cd ~/Development/personal/terminalvelocity, you type z terminal and it takes you there. It builds a frequency database over time, getting smarter the more you use it.
# Install
brew install zoxide      # macOS
sudo apt install zoxide  # Ubuntu/Debian

# Add to ~/.bashrc or ~/.zshrc
eval "$(zoxide init bash)"   # for Bash
eval "$(zoxide init zsh)"    # for Zsh

# Usage examples
z projects               # jump to most-visited directory matching "projects"
z web src                # jump to directory matching both "web" and "src"
zi                       # interactive selection with fzf integration

You don't need to install all of these at once. Start with one — fzf or ripgrep tend to have the most immediate impact — and add others as you get comfortable. Each one is a small upgrade that compounds over time.

These tools share a philosophy: respect the conventions of the classic commands, but make the defaults smarter and the output more useful. They're all open-source, actively maintained, and widely adopted by professional developers.