3ce1d2ec1f
Display Enhancements: • Added color-coordinated flag lines (bold yellow flags, dim separator) • Enhanced bottom preview panel (3 lines → 8 lines) • Implemented bordered box design with flag 🏴 and description 📝 emojis • Added clean flag/description separation using AWK-based parsing • Flag section shows ONLY bash input (e.g., -s sig) • Description section shows ONLY explanation text • Cyan bold for flags, green for descriptions in preview • Handles missing descriptions with dimmed "(No description available)" Technical Improvements: • Modified extract_all_flags() to add ANSI color codes to output • Enhanced browse_flags_fuzzy() preview with intelligent parsing • Uses AWK field separator on em dash (—) for robust splitting • Replaced xargs with sed for trimming to avoid flag interpretation • Added fallback handling for flags without descriptions Project Organization: • Moved documentation files to docs/ directory for better structure 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
295 lines
6.5 KiB
Markdown
295 lines
6.5 KiB
Markdown
# Bash Buddy v2.1.0 - AI-Powered Release 🤖
|
|
|
|
## What's New
|
|
|
|
### 🤖 AI Mode (NEW!)
|
|
|
|
Integrated **NL2SH model** for advanced natural language understanding:
|
|
|
|
```bash
|
|
bhelper ai "find all python files modified in last week"
|
|
# Generated: find /path/to/directory -type f -name "*.py" -mtime -7
|
|
|
|
bhelper ai "count lines in all javascript files"
|
|
bhelper ai "compress all log files older than 30 days"
|
|
```
|
|
|
|
**Features:**
|
|
- Uses your installed `westenfelder/NL2SH:latest` model
|
|
- Generates bash commands from complex natural language
|
|
- Shows command info and safety warnings
|
|
- Works offline with local Ollama
|
|
|
|
### 📚 90+ Commands in Interactive Mode
|
|
|
|
Expanded from 11 to **90+ commands** organized by category:
|
|
|
|
**File Operations (18):** ls, cd, pwd, cp, mv, rm, mkdir, rmdir, touch, cat, less, head, tail, chmod, chown, ln, file, stat
|
|
|
|
**Text Processing (9):** grep, sed, awk, cut, sort, uniq, tr, wc, diff
|
|
|
|
**File Search (4):** find, locate, which, whereis
|
|
|
|
**Compression (5):** tar, gzip, gunzip, zip, unzip
|
|
|
|
**Network (9):** ping, curl, wget, ssh, scp, netstat, ss, ip, ifconfig
|
|
|
|
**System Info (8):** top, htop, ps, df, du, free, uname, uptime
|
|
|
|
**Process Management (6):** kill, pkill, killall, bg, fg, jobs
|
|
|
|
**System Control (5):** sudo, systemctl, service, reboot, shutdown
|
|
|
|
**Package Management (4):** apt, apt-get, dpkg, snap
|
|
|
|
**User Management (7):** useradd, userdel, passwd, su, whoami, w, who
|
|
|
|
**Misc Utilities (9):** echo, date, cal, history, alias, export, env, man, watch
|
|
|
|
### 🔧 Fixed Interactive Mode
|
|
|
|
**Problem:** Filtering didn't work properly - `-v` flag wouldn't show
|
|
|
|
**Solution:** Completely rewrote `show_flags()` function:
|
|
- Better OPTIONS section extraction from man pages
|
|
- Improved filtering logic
|
|
- Proper fallback when OPTIONS section not found
|
|
- Now correctly shows filtered flags
|
|
|
|
**Before:**
|
|
```
|
|
Filter: -v
|
|
[empty or wrong output]
|
|
```
|
|
|
|
**After:**
|
|
```
|
|
Filter: -v
|
|
-v, --invert-match
|
|
Invert the sense of matching, to select non-matching lines.
|
|
-V, --version
|
|
Print the version number of grep to standard output.
|
|
```
|
|
|
|
## All Modes
|
|
|
|
### 1. AI Mode (NEW!) 🤖
|
|
```bash
|
|
bhelper ai "find large files in home directory"
|
|
bhelper ai "get network interface information"
|
|
```
|
|
|
|
### 2. Natural Language Queries
|
|
```bash
|
|
bhelper ask "compress folder" # Database search
|
|
bhelper task "disk usage" # Task search
|
|
```
|
|
|
|
### 3. Category Browsing
|
|
```bash
|
|
bhelper category files
|
|
bhelper category network
|
|
```
|
|
|
|
### 4. Command Explanation
|
|
```bash
|
|
bhelper explain "tar -czf archive.tar.gz folder/"
|
|
```
|
|
|
|
### 5. Interactive Mode (Enhanced!)
|
|
```bash
|
|
bhelper # Browse 90+ commands with fzf
|
|
# Select command → Enter filter → See flags
|
|
```
|
|
|
|
### 6. Direct Flag Lookup
|
|
```bash
|
|
bhelper grep -v # Show grep flags with 'v'
|
|
bhelper ls size # Show ls flags about size
|
|
```
|
|
|
|
## Performance
|
|
|
|
| Mode | Speed | Status |
|
|
|------|-------|--------|
|
|
| Database search | ~50ms | ⚡ Fast |
|
|
| Interactive mode | Instant | ⚡ Instant |
|
|
| Category browse | ~30ms | ⚡ Fast |
|
|
| Direct lookup | ~100ms | ✅ Good |
|
|
| AI mode (first) | 5-15s | 🤖 Processing |
|
|
| AI mode (loaded) | 1-3s | 🤖 Fast |
|
|
|
|
## Improvements Summary
|
|
|
|
### Interactive Mode Fixes
|
|
✅ Fixed flag filtering (now works correctly)
|
|
✅ Better OPTIONS section parsing from man pages
|
|
✅ 90+ commands (up from 11)
|
|
✅ Organized by category
|
|
✅ Improved error messages
|
|
|
|
### AI Integration
|
|
✅ NL2SH model support
|
|
✅ Complex query handling
|
|
✅ Safety warnings
|
|
✅ Command explanation
|
|
✅ Model detection
|
|
|
|
### Code Quality
|
|
✅ Better function organization
|
|
✅ Improved man page parsing
|
|
✅ Enhanced error handling
|
|
✅ Clearer code comments
|
|
|
|
## How to Use
|
|
|
|
### Try AI Mode
|
|
```bash
|
|
source ~/.bashrc # Reload alias if needed
|
|
bhelper ai "find files larger than 100MB"
|
|
```
|
|
|
|
### Try Enhanced Interactive
|
|
```bash
|
|
bhelper # Opens fzf with 90+ commands
|
|
# Type to filter (e.g., "net" for network commands)
|
|
# Select → Enter filter term → See relevant flags
|
|
```
|
|
|
|
### All Commands Available
|
|
```bash
|
|
bhelper --help # See all modes
|
|
bhelper --list # List all 90+ commands
|
|
```
|
|
|
|
## Installation
|
|
|
|
Already installed! Just reload your bash config:
|
|
|
|
```bash
|
|
source ~/.bashrc
|
|
```
|
|
|
|
Or open a new terminal.
|
|
|
|
## Examples
|
|
|
|
### AI Mode Examples
|
|
|
|
**Find Python files:**
|
|
```bash
|
|
$ bhelper ai "find python files modified this week"
|
|
Generated: find /path/to/directory -type f -name "*.py" -mtime -7
|
|
```
|
|
|
|
**Count lines:**
|
|
```bash
|
|
$ bhelper ai "count lines in all javascript files"
|
|
Generated: find . -name "*.js" -exec wc -l {} + | awk '{sum+=$1} END {print sum}'
|
|
```
|
|
|
|
**Network info:**
|
|
```bash
|
|
$ bhelper ai "show my IP address"
|
|
Generated: ip addr show | grep 'inet ' | grep -v 127.0.0.1
|
|
```
|
|
|
|
### Interactive Mode Example
|
|
|
|
```bash
|
|
$ bhelper
|
|
# Type "tar" → Select "tar:Archive files"
|
|
# Enter filter: "extract"
|
|
|
|
Flags for: tar
|
|
Filter: extract
|
|
|
|
-x, --extract, --get
|
|
Extract files from an archive.
|
|
--extract-over-symlinks
|
|
During extraction, follow symlinks.
|
|
```
|
|
|
|
## Models Available
|
|
|
|
Your Ollama models:
|
|
- ✅ `westenfelder/NL2SH:latest` (6.2GB) - Natural Language to Shell ⭐
|
|
- ✅ `llama3.2:3b` (2.0GB) - General purpose
|
|
- ✅ `qwen2.5:3b` (1.9GB) - General purpose
|
|
- ✅ `qwen2.5:1.5b` (986MB) - Fast, lightweight
|
|
|
|
**Default:** NL2SH (specialized for shell commands)
|
|
|
|
To switch models, edit `mode_ai()` function in bash-helper.sh
|
|
|
|
## Troubleshooting
|
|
|
|
### AI Mode Not Working?
|
|
|
|
Check Ollama is running:
|
|
```bash
|
|
ollama list
|
|
```
|
|
|
|
If NL2SH not found:
|
|
```bash
|
|
ollama pull westenfelder/NL2SH
|
|
```
|
|
|
|
### Interactive Mode Filters Not Working?
|
|
|
|
This is now fixed in v2.1.0! The flag extraction has been completely rewritten.
|
|
|
|
### Want More Commands in Interactive Mode?
|
|
|
|
Edit the `COMMANDS` array in bash-helper.sh and add:
|
|
```bash
|
|
"yourcommand:Description of what it does"
|
|
```
|
|
|
|
## Version History
|
|
|
|
**v2.1.0** (Current)
|
|
- Added AI mode with NL2SH model
|
|
- Expanded to 90+ commands
|
|
- Fixed interactive mode filtering
|
|
- Improved OPTIONS parsing
|
|
|
|
**v2.0.0**
|
|
- Natural language queries
|
|
- 20-task database
|
|
- Category browsing
|
|
- ASCII banner
|
|
|
|
**v1.0.0**
|
|
- Interactive fzf mode
|
|
- Direct flag lookup
|
|
- 11 basic commands
|
|
|
|
## Repository
|
|
|
|
**Location:** `~/coding/bash/bash-buddy/`
|
|
|
|
**Gitea:** http://localhost:3030/trill-technician/bash-buddy
|
|
|
|
**Latest commit:** 3e5e431
|
|
|
|
## What's Next?
|
|
|
|
**Possible Future Enhancements:**
|
|
- Response caching for AI queries
|
|
- Command history integration
|
|
- Custom prompt templates for AI
|
|
- Expand database to 100+ tasks
|
|
- Multi-step command generation
|
|
- Interactive command builder
|
|
|
|
---
|
|
|
|
**Bash Buddy v2.1.0** - Now with AI! 🚀🤖
|
|
|
|
Try it now:
|
|
```bash
|
|
bhelper ai "your complex query here"
|
|
```
|