2fb20b0682
Rename bash-helper.sh -> super-man.sh and update all docs/tests to the super-man name and alias. In interactive mode, pressing Esc in the flag browser now returns directly to the home menu, removing the intermediary "Press Enter to search another command" prompt. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
168 lines
4.0 KiB
Markdown
168 lines
4.0 KiB
Markdown
# Super Man
|
|
|
|
🚀 CLI assistant for impromptu bash scripting help
|
|
|
|
## Description
|
|
|
|
Interactive bash command helper that uses `fzf` to browse common bash commands and their options. Perfect for when you need a quick reminder of command flags and usage without digging through man pages.
|
|
|
|
## Features
|
|
|
|
- 🔍 **Interactive Search** - Browse commands with fzf fuzzy finder
|
|
- 📖 **Command Descriptions** - Clear explanations for each command
|
|
- 🎯 **Flag Filtering** - Search for specific command options
|
|
- 🎨 **Color-Coded Output** - Easy-to-read terminal output
|
|
- 📚 **Smart Help** - Works with both built-in and external commands
|
|
- ⚡ **Quick Access** - Fast command reference at your fingertips
|
|
|
|
## Dependencies
|
|
|
|
```bash
|
|
# fzf - Fuzzy finder (required)
|
|
sudo apt install fzf # Ubuntu/Debian
|
|
brew install fzf # macOS
|
|
sudo pacman -S fzf # Arch
|
|
```
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
# Clone the repository
|
|
git clone http://localhost:3030/trill-technician/super-man.git
|
|
cd super-man
|
|
|
|
# Make executable
|
|
chmod +x super-man.sh
|
|
|
|
# Optional: Install system-wide
|
|
sudo cp super-man.sh /usr/local/bin/super-man
|
|
|
|
# Or add to your PATH
|
|
echo 'export PATH="$HOME/super-man:$PATH"' >> ~/.bashrc
|
|
source ~/.bashrc
|
|
```
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
./super-man.sh
|
|
```
|
|
|
|
### Workflow
|
|
|
|
1. **Launch** - Run the script
|
|
2. **Browse** - Use arrow keys to navigate commands
|
|
3. **Select** - Press Enter to choose a command
|
|
4. **Filter** - Optionally enter a keyword to filter flags
|
|
5. **View** - See all available flags for the command
|
|
|
|
### Example Session
|
|
|
|
```
|
|
$ ./super-man.sh
|
|
|
|
> ls:List directory contents
|
|
cd:Change the current directory
|
|
pwd:Print the name of the current working directory
|
|
cp:Copy files and directories
|
|
mv:Move or rename files and directories
|
|
...
|
|
|
|
Command: ls
|
|
Description: List directory contents
|
|
Filter flags (optional): size
|
|
|
|
Flags for ls:
|
|
-s, --size
|
|
print the allocated size of each file, in blocks
|
|
-S sort by file size, largest first
|
|
--block-size=SIZE
|
|
with -l, scale sizes by SIZE when printing them
|
|
```
|
|
|
|
## Included Commands
|
|
|
|
The script includes help for these common bash commands:
|
|
|
|
| Command | Description |
|
|
|---------|-------------|
|
|
| `ls` | List directory contents |
|
|
| `cd` | Change the current directory |
|
|
| `pwd` | Print working directory |
|
|
| `cp` | Copy files and directories |
|
|
| `mv` | Move or rename files |
|
|
| `rm` | Remove files or directories |
|
|
| `mkdir` | Create directories |
|
|
| `rmdir` | Remove empty directories |
|
|
| `grep` | Search text patterns |
|
|
| `find` | Search for files |
|
|
| `echo` | Display text |
|
|
|
|
## Customization
|
|
|
|
### Adding More Commands
|
|
|
|
Edit the `COMMANDS` array in `super-man.sh`:
|
|
|
|
```bash
|
|
COMMANDS=(
|
|
"command-name:Description of what it does"
|
|
"wget:Download files from the web"
|
|
"curl:Transfer data with URLs"
|
|
"tar:Archive files"
|
|
# Add your own...
|
|
)
|
|
```
|
|
|
|
### Changing Colors
|
|
|
|
Modify the color variables at the top of the `show_flags()` function:
|
|
|
|
```bash
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[0;33m'
|
|
NC='\033[0m' # No Color
|
|
```
|
|
|
|
## How It Works
|
|
|
|
1. **Command List** - Defines an array of common bash commands with descriptions
|
|
2. **FZF Selection** - Presents commands in an interactive fuzzy finder
|
|
3. **Help Extraction** - Retrieves flag information from:
|
|
- Built-in commands using `help`
|
|
- External commands using `man` pages
|
|
4. **Filtered Output** - Optionally filters flags based on your search term
|
|
|
|
## Tips
|
|
|
|
- Use partial matching in fzf (type any part of command name)
|
|
- Filter flags to find specific options quickly
|
|
- Add your most-used commands to the array
|
|
- Combine with aliases for even faster access
|
|
|
|
```bash
|
|
# Add to ~/.bashrc
|
|
alias bh='super-man.sh'
|
|
```
|
|
|
|
## Contributing
|
|
|
|
Feel free to:
|
|
- Add more commands to the default list
|
|
- Improve flag extraction logic
|
|
- Enhance the user interface
|
|
- Fix bugs or improve documentation
|
|
|
|
## License
|
|
|
|
MIT License - feel free to modify and distribute
|
|
|
|
## Author
|
|
|
|
Created as a quick reference tool for bash command-line work
|
|
|
|
---
|
|
|
|
**Pro Tip**: Bookmark common flag patterns you discover, or add them as comments in the script for quick reference!
|