Terminal Tools That Changed My Workflow
The default Unix toolbox is powerful — but some community-built replacements and additions are just better. Here’s a quick tour of the tools I use every day in the terminal, what they do, and a few tricks I’ve picked up.
Starship — The Cross-Shell Prompt
Starship is a blazing-fast, minimal, and infinitely customizable shell prompt written in Rust. It works with bash, zsh, fish, PowerShell, and more — so your prompt looks the same everywhere.
Tips & Tricks:
- Run
starship explainto see exactly what each segment in your current prompt means. - Use presets to get started fast:
starship preset nerd-font-symbols -o ~/.config/starship.toml - Show only what you need — comment out unused modules in
starship.tomlto speed up render time.
# Install
curl -sS https://starship.rs/install.sh | sh
zoxide — Smarter cd
zoxide learns the directories you visit most and lets you jump to them with minimal typing. I alias it to zd (or just z). Think of it as cd with memory.
Tips & Tricks:
z foojumps to the most frecent directory matchingfoo.ziopens an interactive picker (uses fzf under the hood if installed).- Run
zoxide query --listto see your full jump list and rankings.
# Fish
zoxide init fish | source
# Bash
eval "$(zoxide init bash)"
ripgrep (rg) — Recursive Search That Respects Your Time
ripgrep is a line-oriented search tool that recursively searches directories for a pattern. It’s faster than grep, respects .gitignore by default, and has great defaults.
Tips & Tricks:
rg -t py "def main"— search only Python files.rg --hidden "TODO"— include hidden files (excluded by default).rg -C 3 "error"— show 3 lines of context around each match.rg -l "pattern"— list only file names with matches, not the lines.
rg "fn main" --type rust
eza — A Modern ls
eza is a maintained, feature-rich replacement for ls. I use two aliases daily:
alias ls='eza --lh --group-directories-first'
alias lt='eza --tree'Tips & Tricks:
eza --git— show git status of each file inline.eza --tree --level=2— limit tree depth to avoid overwhelming output.eza -la— long listing including hidden files, with human-readable sizes.
fd — A Better find
fd is a simple, fast, and user-friendly alternative to find. The syntax is far less painful, and it also respects .gitignore by default.
Fair warning: it is a bit like shooting yourself in the foot if you’re used to
find— you’ll never want to go back.
Tips & Tricks:
fd -e md— find all Markdown files in the current tree.fd -H "dotfile"— include hidden files in search.fd --type d "config"— find directories named “config”.- Combine with other tools:
fd -e log | xargs rg "error"
fd "\.go$" src/
bat — cat With Wings
bat is a cat clone with syntax highlighting, line numbers, and git integration. It automatically pages long files and shows you what’s changed in git diffs.
Tips & Tricks:
bat --plain— disable decorations for clean output (good for piping).bat --diff— only show lines with git changes.- Set as your
MANPAGERfor syntax-highlighted man pages:export MANPAGER="sh -c 'col -bx | bat -l man -p'" bat --list-themes— preview all available themes.
fastfetch — System Info Display
fastfetch is a neofetch-style system information tool, but faster and more configurable. Great for flexing your setup or just quickly checking system specs.
Tips & Tricks:
fastfetch --gen-config— generate a default config you can tweak at~/.config/fastfetch/config.jsonc.- Use
--logo-type smallfor a compact display in smaller terminals. - Set it to run on shell startup for that warm welcome every time you open a terminal.
# Add to ~/.config/fish/config.fish or ~/.bashrc
fastfetchbtop — System Monitor With Style
btop is a resource monitor that shows CPU, memory, disk, network, and process info in a beautiful TUI. It’s the modern successor to htop.
Tips & Tricks:
- Press
F2oroinside btop to open options — tons of customization available. - Use
btop --utf-forceif icons don’t render correctly in your terminal. - Filter processes by typing while btop is open — it works like an inline search.
- You can switch themes in the config:
color_theme = "dracula".
fzf — The Fuzzy Finder
fzf is a general-purpose interactive fuzzy finder for the terminal. I alias it to ff. Once you start using it, you’ll pipe everything through it.
Tips & Tricks:
Ctrl+R— fuzzy search your shell history (fzf integrates with this automatically).Ctrl+T— fuzzy-insert a file path at the cursor.Alt+C— fuzzycdinto a directory.- Combine with other tools:
# Preview files while browsing ff --preview 'bat --color=always {}' # Kill a process interactively kill -9 (ps aux | ff | awk '{print $2}')
cht.sh — The Cheat Sheet You Query From Your Terminal
cht.sh is a community-driven cheat sheet service. No browser, no distractions — just answers straight in your terminal. I’ve written a full post about it here.
Tips & Tricks:
curl cheat.sh/tar— instant cheat sheet fortar.curl cheat.sh/python/list+comprehension— language-specific snippets.- Add a shell function to make it even easier:
cht() { curl -s "cheat.sh/$1" | less -R; }
Wrapping Up
These tools are all open source, actively maintained, and each one solves a real pain point. If you haven’t tried them all, start with one — eza and bat are the easiest drops-in, and fzf will change how you think about the terminal.
Happy hacking!