Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
Essential CLI tools and shell productivity patterns for efficient terminal workflows
author
workspace-hub
category
devtools
capabilities
["Shell aliases and functions","Modern CLI tools (jq, fzf, ripgrep, fd, bat, exa)","Pipeline patterns and data transformation","Fuzzy finding and interactive selection","History management and shell optimization","Integration workflows between tools"]
Master essential CLI tools and shell patterns for efficient terminal workflows. This skill covers modern replacements for traditional Unix tools, fuzzy finding, pipeline patterns, and shell customization.
When to Use This Skill
USE when:
Building efficient terminal workflows
Processing text and JSON data
Searching codebases quickly
Navigating file systems efficiently
Automating repetitive tasks
Creating shell functions and aliases
Building interactive scripts
DON'T USE when:
GUI-based workflows are more appropriate
Processing binary data (use specialized tools)
Complex data analysis (use Python/Pandas)
Tasks requiring visual feedback
Prerequisites
Installation
macOS (Homebrew):
# Essential modern tools
brew install jq # JSON processor
brew install fzf # Fuzzy finder
brew install ripgrep # Fast grep (rg)
brew install fd # Fast find
brew install bat # Better cat
brew install exa # Better ls (or eza)
brew install zoxide # Smart cd
brew install starship # Shell prompt
brew install tmux # Terminal multiplexer# Install fzf keybindings
$(brew --prefix)/opt/fzf/install
Linux (Ubuntu/Debian):
# Update package listsudo apt-get update
# Install from apt (may be older versions)sudo apt-get install -y jq fzf ripgrep fd-find bat
# Note: fd is 'fdfind' on Debian/Ubuntusudoln -s $(which fdfind) /usr/local/bin/fd
# bat may be 'batcat' on older systemssudoln -s $(which batcat) /usr/local/bin/bat
apt-get install -y exa
curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash
curl -sS https://starship.rs/install.sh | sh
# Find and previewfdp() {
fd "$@" | fzf --preview 'bat --color=always {} 2>/dev/null || exa --tree --level=2 --color=always {}'
}
# Find and editfde() {
local file
file=$(fd -t f "$@" | fzf --preview 'bat --color=always {}')
[[ -n "$file" ]] && ${EDITOR:-vim}"$file"
}
# Find large filesfdlarge() {
local size="${1:-100M}"
fd -t f -S +"$size" | xargs ls -lh | sort -k5 -h
}
# Find recent filesfdrecent() {
local days="${1:-7}"
fd -t f --changed-within "${days}d"
}
# Find duplicates by namefddup() {
fd -t f | sort | uniq -d
}
5. bat - Better cat
Basic Usage:
# Syntax highlighted output
bat file.py
# Show line numbers
bat -n file.py
# Show all non-printable chars
bat -A file.py
# Multiple files
bat file1.py file2.py
# Plain output (no decorations)
bat -p file.py
# Specific language
bat -l json data.txt
# Diff two files
bat --diff file1 file2
bat Configuration:
# Add to ~/.bashrc or ~/.zshrc# Set bat as default pagerexport MANPAGER="sh -c 'col -bx | bat -l man -p'"export PAGER="bat"# Bat themeexport BAT_THEME="TwoDark"# Bat styleexport BAT_STYLE="numbers,changes,header"
bat Aliases:
# Replace cat with bataliascat='bat --paging=never'# Preview alias for fzfalias preview='fzf --preview "bat --color=always {}"'# Pretty print JSONalias json='bat -l json'# Pretty print YAMLalias yaml='bat -l yaml'# Diff with batalias diff='bat --diff'
6. exa/eza - Better ls
Basic Usage:
# Basic list
exa
# Long format
exa -l
# All files including hidden
exa -la
# Tree view
exa --tree
exa --tree --level=2
# Sort by modified
exa -l --sort=modified
# With git status
exa -l --git
# Group directories first
exa -l --group-directories-first
# Icons
exa -l --icons
exa Aliases:
# Add to ~/.bashrc or ~/.zshrc# Replace ls with exaaliasls='exa --group-directories-first'alias ll='exa -l --group-directories-first --git'alias la='exa -la --group-directories-first --git'alias lt='exa --tree --level=2'alias lta='exa --tree --level=2 -a'# With icons (if supported)alias li='exa -l --icons --group-directories-first --git'
7. zoxide - Smart cd
Basic Usage:
# Initialize (add to shell rc)eval"$(zoxide init bash)"# or zsh# Use z instead of cd
z projects # Jump to most frequent/recent match
z pro # Partial match# Interactive selection
zi # Opens fzf for selection# Add directory manually
zoxide add /path/to/dir
# Query database
zoxide query projects
zoxide query -l # List all entries
zoxide Configuration:
# Add to ~/.bashrc or ~/.zshrc# Initialize zoxideeval"$(zoxide init bash --cmd cd)"# Replace cd# Or use custom commandeval"$(zoxide init bash --cmd j)"# Use 'j' for jump