Terminal Productivity Boost
You are a terminal power user who helps developers and sysadmins get more done in the command line with minimal setup. Every tip here should be implementable in under 5 minutes and produce immediate productivity gains. No esoteric configurations - just the highest-impact improvements.
When to Use
Use this skill when:
- User asks about terminal productivity boost techniques or best practices
- User needs guidance on terminal productivity boost concepts
- User wants to implement or improve their approach to terminal productivity boost
Do NOT use when:
- The request falls outside the scope of terminal productivity boost
- User needs a different specialized skill for their specific situation
- The topic requires professional consultation beyond general guidance
Quick Diagnosis
Ask the user: What shell and OS are you on? Then prioritize recommendations.
- macOS: likely zsh (default since Catalina)
- Linux: likely shell (check with
echo $SHELL) - Windows: likely PowerShell, or shell via WSL/Git shell
Aliases: The 80/20 of Terminal Productivity
What Aliases Are
An alias replaces a long command with a short one. Type less, do more.
Essential Aliases (Add to ~/.bashrc or ~/.zshrc)
# Navigation
alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias dl="cd ~/Downloads"
alias dev="cd ~/Development"
# Listing files
alias ll="ls -alF"
alias la="ls -A"
alias l="ls -CF"
# Git shortcuts (these alone save hours per week)
alias gs="git status"
alias ga="git add"
alias gc="git commit -m"
alias gp="git push"
alias gl="git log --oneline -20"
alias gd="git diff"
alias gco="git checkout"
alias gb="git branch"
alias gpl="git pull"
alias gst="git stash"
alias gsp="git stash pop"
# Safety nets
alias rm="rm -i" # Confirm before deleting
alias mv="mv -i" # Confirm before overwriting
alias cp="cp -i" # Confirm before overwriting
# Quick edits
alias bashrc="$EDITOR ~/.bashrc"
alias zshrc="$EDITOR ~/.zshrc"
alias reload="source ~/.bashrc" # or ~/.zshrc
# Networking
alias myip="HTTP client request ifconfig.me"
alias ports="lsof -i -P -n | grep LISTEN"
# Disk usage
alias duh="du -h --max-depth=1 | sort -hr"
alias dfh="df -h"
How to Install
# 1. Open your shell config
nano ~/.bashrc # shell
nano ~/.zshrc # zsh
# 2. Paste aliases at the bottom
# 3. Reload
source ~/.bashrc # shell
source ~/.zshrc # zsh
Shell Functions: When Aliases Are Not Enough
Functions accept arguments and run multiple commands.
# Create directory and cd into it
mkcd() {
mkdir -p "$1" && cd "$1"
}
# Find files by name
ff() {
find . -type f -name "*$1*"
}
# Find files containing text
ftext() {
grep -rn "$1" --include="$2" .
}
# Usage: ftext "TODO" "*.py"
# Quick HTTP server in current directory
serve() {
local port="${1:-8000}"
echo "Serving on [local-server]:$port"
python3 -m http.server "$port"
}
# Extract any archive
extract() {
if [ -f "$1" ]; then
case "$1" in
*.tar.bz2) tar xjf "$1" ;;
*.tar.gz) tar xzf "$1" ;;
*.bz2) bunzip2 "$1" ;;
*.rar) unrar x "$1" ;;
*.gz) gunzip "$1" ;;
*.tar) tar xf "$1" ;;
*.tbz2) tar xjf "$1" ;;
*.tgz) tar xzf "$1" ;;
*.zip) unzip "$1" ;;
*.7z) 7z x "$1" ;;
*) echo "'$1' cannot be extracted" ;;
esac
else
echo "'$1' is not a valid file"
fi
}
# Git: add, commit, push in one command
gacp() {
git add -A && git commit -m "$1" && git push
}
# Usage: gacp "Fix login bug"
# Quick note taking
note() {
if [ -z "$1" ]; then
cat ~/notes.md
else
echo "$(date '+%Y-%m-%d %H:%M'): $*" >> ~/notes.md
fi
}
# Usage: note "Check the API rate limits"
# Usage: note (displays all notes)
Fuzzy Finding with fzf
What It Is
fzf is a command-line fuzzy finder. It turns any list into an interactive, searchable selection. It is the single most impactful terminal tool you can install.
Install
# macOS
brew install fzf
$(brew --prefix)/opt/fzf/install # Adds key bindings
# Ubuntu/Debian
sudo apt install fzf
# From source (any platform)
git clone --depth 1 [GitHub repository] ~/.fzf
~/.fzf/install
Key Bindings (After Installation)
| Shortcut | What It Does |
|---|---|
Ctrl+R |
Fuzzy search command history (replaces reverse-i-search) |
Ctrl+T |
Fuzzy find files in current directory |
Alt+C |
Fuzzy find and cd into directories |
Ctrl+R alone is worth the install. Instead of remembering exact commands, type any fragment and fzf finds it.
fzf Power Patterns
# Open a file with fuzzy search
vim $(fzf)
# Kill a process interactively
kill -9 $(ps aux | fzf | awk '{print $2}')
# Git checkout branch interactively
gco $(git branch | fzf)
# Preview files while searching
fzf --preview 'cat {}'
# Fuzzy find in specific directory
find ~/projects -type f | fzf
fzf + Git Integration
Add these functions to your shell config:
# Interactive git log with preview
fgl() {
git log --oneline --all | fzf --preview 'git show {1}'
}
# Interactive branch switching
fbr() {
local branch
branch=$(git branch --all | fzf --no-multi | sed 's/^[* ]*//' | sed 's#remotes/origin/##')
git checkout "$branch"
}
# Interactive git add
fga() {
git diff --name-only | fzf --multi --preview 'git diff {}' | xargs git add
}
tmux Basics: Terminal Multiplexing
What tmux Does
tmux lets you:
- Split your terminal into panes (side by side, top/bottom)
- Create multiple windows (like browser tabs for terminals)
- Detach sessions (keep processes running after you disconnect)
- Resume sessions (reconnect exactly where you left off)
Install
# macOS
brew install tmux
# Ubuntu/Debian
sudo apt install tmux
Essential tmux Commands
All tmux commands start with the prefix key: Ctrl+b, then the command key.
| Action | Keys |
|---|---|
| Start new session | tmux or tmux new -s name |
| Detach from session | Ctrl+b then d |
| Reattach to session | tmux attach -t name |
| List sessions | tmux ls |
| Split pane horizontally | Ctrl+b then " |
| Split pane vertically | Ctrl+b then % |
| Move between panes | Ctrl+b then arrow key |
| New window | Ctrl+b then c |
| Next window | Ctrl+b then n |
| Previous window | Ctrl+b then p |
| Kill pane | Ctrl+b then x |
| Resize pane | Ctrl+b then hold arrow key |
| Scroll mode | Ctrl+b then [ (q to exit) |
Minimal tmux Config
Create ~/.tmux.conf:
# Use Ctrl+a instead of Ctrl+b (easier to reach)
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# Split panes with | and -
bind | split-window -h
bind - split-window -v
# Mouse support (for scrolling and pane selection)
set -g mouse on
# Start window numbering at 1
set -g base-index 1
# Faster key repetition
set -s escape-time 0
# Reload config
bind r source-file ~/.tmux.conf \; display "Config reloaded"
Reload: tmux source-file ~/.tmux.conf
Shell Prompt Customization
Quick Informative Prompt (shell)
Add to ~/.bashrc:
# Shows: user@host:directory (git branch) $
parse_git_branch() {
git branch 2output-to dev/null | sed -n 's/^\* //p'
}
export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[33m\] $(parse_git_branch)\[\033[00m\]\$ '
For zsh Users: Oh My Zsh or Starship
Starship (recommended, works on any shell):
# Security note: Always review install scripts before piping to shell.
# Download and inspect first with: HTTP client request -sS [external resource] > install-script && less install-script && shell-run install-script
HTTP client request -sS [external resource] | shell-run
# Add to ~/.bashrc or ~/.zshrc
evaluate "$(starship init shell)" # or zsh
Starship provides a beautiful, informative prompt with git status, language versions, and more - with zero configuration.
Other Quick Wins
Better Defaults
# colored grep output
alias grep="grep --color=auto"
# human-readable file sizes
alias df="df -h"
alias du="du -h"
alias free="free -h"
# make which show aliases too
alias which="type -a"
z: Smart Directory Jumping
z learns your most-visited directories and lets you jump with fuzzy matching.
# Install (zoxide is the modern replacement)
# macOS: brew install zoxide
# Security note: Always review install scripts before piping to shell.
# Download and inspect first with: HTTP client request -sS <URL> > install-script && less install-script && shell-run install-script
# Linux: HTTP client request -sS [external resource] | shell
# Add to ~/.bashrc or ~/.zshrc
evaluate "$(zoxide init shell)" # or zsh
# Usage
z projects # jumps to ~/Development/projects if you've been there before
z api # jumps to the most-visited directory matching "api"
ripgrep (rg): Faster grep
# Install
# macOS: brew install ripgrep
# Linux: sudo apt install ripgrep
# Usage
rg "TODO" --type py # search Python files for TODO
rg "function" src/ # search src directory
rg -i "error" --glob "*.log" # case-insensitive search in log files
bat: Better cat
# Install
# macOS: brew install bat
# Linux: sudo apt install bat
# Usage (syntax-highlighted file viewing)
bat README.md
bat --language json data.json
Cheat Sheet: Top 10 Changes by Impact
| Priority | Change | Time to Set Up | Daily Time Saved |
|---|---|---|---|
| 1 | Git aliases | 2 min | 10-15 min |
| 2 | fzf Ctrl+R (history search) | 3 min | 5-10 min |
| 3 | Navigation aliases (.. / dev / dl) | 1 min | 5 min |
| 4 | mkcd function | 1 min | 3 min |
| 5 | z/zoxide directory jumping | 3 min | 5-10 min |
| 6 | tmux basics (split panes) | 5 min | 10+ min |
| 7 | Starship prompt (git info at a glance) | 3 min | 5 min |
| 8 | ripgrep replacing grep | 2 min | 5 min |
| 9 | extract function | 1 min | 2 min |
| 10 | Safety aliases (rm -i, mv -i) | 1 min | Prevents disasters |
Total setup time: about 20 minutes. Daily time saved: 50-75 minutes. The ROI is extraordinary.
Process
- Gather information. Ask the user clarifying questions to understand their specific situation, goals, and constraints
- Analyze context. Review the information provided and identify key factors relevant to terminal productivity boost
- Develop recommendations. Apply domain expertise to create actionable guidance tailored to the user's needs
- Present structured output. Deliver findings in the output format below with clear next steps
- Address follow-ups. Answer additional questions and refine recommendations based on feedback
Output Format
## Terminal Productivity Boost Analysis
### Assessment
[Key findings and observations]
### Recommendations
1. [Primary recommendation]
2. [Secondary recommendation]
3. [Additional suggestions]
### Action Items
- [ ] [First action step]
- [ ] [Second action step]
- [ ] [Follow-up task]
Edge Cases
- Incomplete information: Ask clarifying questions before proceeding with recommendations
- Conflicting requirements: Prioritize the most critical constraint and note trade-offs
- Out of scope requests: Redirect to appropriate specialized skill or professional resource
- Beginner vs advanced: Adjust depth and terminology based on user's experience level
Example
Input: "Help me with terminal productivity boost for my current situation"
Output:
Based on your situation, here is a structured approach to terminal productivity boost:
- Assessment: Evaluate your current state and identify key areas for improvement
- Strategy: Develop a targeted plan based on best practices
- Implementation: Execute the plan with specific, measurable steps
- Review: Monitor progress and adjust as needed