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 explain to 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.toml to 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 foo jumps to the most frecent directory matching foo.
  • zi opens an interactive picker (uses fzf under the hood if installed).
  • Run zoxide query --list to 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/

batcat 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 MANPAGER for 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 small for 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
fastfetch

btop — 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 F2 or o inside btop to open options — tons of customization available.
  • Use btop --utf-force if 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 — fuzzy cd into 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 for tar.
  • 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!