cli-power-tools
Utility Pro
Overview
Masters the command-line environment by turning raw text and unstructured data into actionable insights. Combines Rust-powered search tools (ripgrep, fd, bat), structured data shells (Nushell), JSON manipulation (jq/yq), and modern HTTP clients (xh) for high-performance CLI workflows.
Core philosophy: Replace legacy text-parsing pipelines (grep/awk/sed chains) with purpose-built tools that understand structure. ripgrep understands gitignore rules, fd understands file types, jq understands JSON, and Nushell understands tables.
When to use: Codebase-wide search and analysis, multi-file refactoring, JSON/YAML transformation pipelines, API debugging, directory navigation, log parsing, disk usage auditing, dependency tracing.
When NOT to use: GUI-based tasks, complex application logic (write a script instead), tasks requiring interactive prompts.
Quick Reference
| Pattern | Tool / Command | Key Points |
|---|---|---|
| Text search | rg "pattern" -g "*.tsx" |
10-100x faster than grep, respects .gitignore |
| File search | fd -e pdf or fd "pattern" |
Fast alternative to find with smart defaults |
| Syntax-highlighted read | bat file.ts |
Cat with syntax highlighting and git integration |
| Directory jump | z project-name |
Remembers frequently visited directories |
| Fuzzy search | fzf or CTRL-T / CTRL-R |
Interactive selection for files and history |
| Tree view | eza --tree --level=2 |
Metadata-rich ls replacement with tree support |
| JSON query | jq '.items[] | select(.active)' |
Full functional programming for JSON |
| YAML query | yq '.config.database' file.yml |
jq-like syntax for YAML files |
| HTTP request | xh POST api.example.com/v1/data key=value |
Colorized, user-friendly HTTP client |
| Multi-file refactor | fd -e tsx -x sed -i 's/Old/New/g' {} |
Find files then execute transforms |
| Structured shell | ls | where size > 1mb | sort-by size |
Nushell tables instead of text parsing |
| Log parsing | rg "ERROR" --json | jq 'select(.type == "match") | .data.lines.text' |
Combine ripgrep JSON output with jq filters |
| File preview with search | fzf --preview 'bat --color=always {}' |
Browse files with syntax-highlighted preview |
| Find recently changed | fd --changed-within 1h |
Find files modified within a time window |
| Export count by file | rg -c "pattern" -g "*.ts" | sort -t: -k2 -rn |
Count matches per file, sorted by frequency |
| JSON format conversion | yq -o json config.yml |
Convert between YAML, JSON, CSV, and other formats |
| Advanced regex search | rg -P "(?<=function\s)\w+" --only-matching |
PCRE2 for lookahead/lookbehind patterns |
| Git-aware file listing | eza -la --git --icons |
Show file metadata with inline git status |
Tool Overview
| Category | Modern Tool | Replaces | Key Advantage |
|---|---|---|---|
| Text search | ripgrep (rg) |
grep, ag, git grep | Speed, .gitignore awareness, Unicode |
| File search | fd | find | Smart defaults, regex, parallelism |
| File viewer | bat | cat, less | Syntax highlighting, git diff markers |
| Directory jump | zoxide (z) |
cd, autojump | Frecency-based ranking, fzf fallback |
| Fuzzy finder | fzf | manual piping | Universal selector for any list |
| File listing | eza | ls, tree | Tree view, git status, icons |
| JSON processing | jq | awk, python oneliners | Typed, functional JSON transforms |
| YAML processing | yq | sed on YAML | jq-compatible syntax for YAML |
| HTTP client | xh | curl, httpie | HTTPie syntax, Rust speed, single binary |
| Structured shell | Nushell | bash + awk/sed | Typed tables, native format conversion |
Common Mistakes
| Mistake | Correct Pattern |
|---|---|
Using grep instead of ripgrep for codebase search |
Use rg which is 10-100x faster and respects .gitignore by default |
Piping ls output into grep for file filtering |
Use fd for file discovery, or eza -D / eza --ignore-glob for listing |
Writing complex awk scripts for structured data |
Use Nushell or jq which natively understand JSON, CSV, and YAML |
Running rm -rf in scripts without a dry-run step |
Always add a verification or dry-run step before destructive operations |
| Using capturing groups in regex when not needed | Prefer non-capturing groups (?:...) for better performance in large-scale scans |
Searching node_modules or .git directories |
Use rg which skips these by default, or configure exclusions explicitly |
Forgetting select(.type == "match") on rg --json |
ripgrep JSON emits begin, match, context, end, and summary message types |
Using curl with verbose flag syntax |
Use xh which provides colorized output and HTTPie-compatible request-item syntax |
Parsing text output between tools with cut/tr |
Use Nushell pipelines that preserve structured data through every stage |
Anchoring regex with .* at the start |
Anchor with ^ when possible; unanchored .* causes expensive backtracking |
Installation
All tools are available via common package managers. Most are single statically linked binaries.
| Tool | macOS (Homebrew) | Linux (apt/cargo) |
|---|---|---|
| ripgrep | brew install ripgrep |
apt install ripgrep or cargo install ripgrep |
| fd | brew install fd |
apt install fd-find or cargo install fd-find |
| bat | brew install bat |
apt install bat or cargo install bat |
| zoxide | brew install zoxide |
cargo install zoxide |
| fzf | brew install fzf |
apt install fzf |
| eza | brew install eza |
cargo install eza |
| jq | brew install jq |
apt install jq |
| yq | brew install yq |
snap install yq or go install |
| xh | brew install xh |
cargo install xh |
| Nushell | brew install nushell |
cargo install nu |
Shell integration (add to shell config after installing):
| Tool | Shell Integration Required |
|---|---|
| zoxide | eval "$(zoxide init zsh)" (or bash/fish equivalent) |
| fzf | Source keybinding and completion scripts from fzf install |
Delegation
- Large-scale codebase search and analysis: Use
Exploreagent to run ripgrep queries, trace dependencies, and map code patterns - Multi-file refactoring workflows: Use
Taskagent to coordinate fd, sed, and verification steps across an entire project - Pipeline architecture for data transformation: Use
Planagent to design structured pipelines combining jq, Nushell, and API tools
References
- Modern Unix Toolbox -- ripgrep, fd, bat, zoxide, fzf, eza, terminal setup
- Advanced Regex and jq -- named captures, lookahead/lookbehind, jq filters, integrated pipelines
- Nushell Structured Data -- table paradigm, API interaction, scripting, Unix interop