From d0727104928ad72a67b3ec83e57794e2225b7972 Mon Sep 17 00:00:00 2001 From: Haylan Date: Fri, 3 Apr 2026 12:00:27 +0200 Subject: [PATCH] chore: add bash-linux skill documentation and README structure --- .agents/skills/bash-linux/SKILL.md | 204 +++++++++++++++++++++++++++++ .claude/skills/bash-linux | 1 + README.md | 78 +++++++++++ core/.gitkeep | 0 skills-lock.json | 10 ++ 5 files changed, 293 insertions(+) create mode 100644 .agents/skills/bash-linux/SKILL.md create mode 120000 .claude/skills/bash-linux create mode 100644 README.md create mode 100644 core/.gitkeep create mode 100644 skills-lock.json diff --git a/.agents/skills/bash-linux/SKILL.md b/.agents/skills/bash-linux/SKILL.md new file mode 100644 index 0000000..b2af921 --- /dev/null +++ b/.agents/skills/bash-linux/SKILL.md @@ -0,0 +1,204 @@ +--- +name: bash-linux +description: "Bash/Linux terminal patterns. Critical commands, piping, error handling, scripting. Use when working on macOS or Linux systems." +risk: unknown +source: community +date_added: "2026-02-27" +--- + +# Bash Linux Patterns + +> Essential patterns for Bash on Linux/macOS. + +--- + +## 1. Operator Syntax + +### Chaining Commands + +| Operator | Meaning | Example | +|----------|---------|---------| +| `;` | Run sequentially | `cmd1; cmd2` | +| `&&` | Run if previous succeeded | `npm install && npm run dev` | +| `\|\|` | Run if previous failed | `npm test \|\| echo "Tests failed"` | +| `\|` | Pipe output | `ls \| grep ".js"` | + +--- + +## 2. File Operations + +### Essential Commands + +| Task | Command | +|------|---------| +| List all | `ls -la` | +| Find files | `find . -name "*.js" -type f` | +| File content | `cat file.txt` | +| First N lines | `head -n 20 file.txt` | +| Last N lines | `tail -n 20 file.txt` | +| Follow log | `tail -f log.txt` | +| Search in files | `grep -r "pattern" --include="*.js"` | +| File size | `du -sh *` | +| Disk usage | `df -h` | + +--- + +## 3. Process Management + +| Task | Command | +|------|---------| +| List processes | `ps aux` | +| Find by name | `ps aux \| grep node` | +| Kill by PID | `kill -9 ` | +| Find port user | `lsof -i :3000` | +| Kill port | `kill -9 $(lsof -t -i :3000)` | +| Background | `npm run dev &` | +| Jobs | `jobs -l` | +| Bring to front | `fg %1` | + +--- + +## 4. Text Processing + +### Core Tools + +| Tool | Purpose | Example | +|------|---------|---------| +| `grep` | Search | `grep -rn "TODO" src/` | +| `sed` | Replace | `sed -i 's/old/new/g' file.txt` | +| `awk` | Extract columns | `awk '{print $1}' file.txt` | +| `cut` | Cut fields | `cut -d',' -f1 data.csv` | +| `sort` | Sort lines | `sort -u file.txt` | +| `uniq` | Unique lines | `sort file.txt \| uniq -c` | +| `wc` | Count | `wc -l file.txt` | + +--- + +## 5. Environment Variables + +| Task | Command | +|------|---------| +| View all | `env` or `printenv` | +| View one | `echo $PATH` | +| Set temporary | `export VAR="value"` | +| Set in script | `VAR="value" command` | +| Add to PATH | `export PATH="$PATH:/new/path"` | + +--- + +## 6. Network + +| Task | Command | +|------|---------| +| Download | `curl -O https://example.com/file` | +| API request | `curl -X GET https://api.example.com` | +| POST JSON | `curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL` | +| Check port | `nc -zv localhost 3000` | +| Network info | `ifconfig` or `ip addr` | + +--- + +## 7. Script Template + +```bash +#!/bin/bash +set -euo pipefail # Exit on error, undefined var, pipe fail + +# Colors (optional) +RED='\033[0;31m' +GREEN='\033[0;32m' +NC='\033[0m' + +# Script directory +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# Functions +log_info() { echo -e "${GREEN}[INFO]${NC} $1"; } +log_error() { echo -e "${RED}[ERROR]${NC} $1" >&2; } + +# Main +main() { + log_info "Starting..." + # Your logic here + log_info "Done!" +} + +main "$@" +``` + +--- + +## 8. Common Patterns + +### Check if command exists + +```bash +if command -v node &> /dev/null; then + echo "Node is installed" +fi +``` + +### Default variable value + +```bash +NAME=${1:-"default_value"} +``` + +### Read file line by line + +```bash +while IFS= read -r line; do + echo "$line" +done < file.txt +``` + +### Loop over files + +```bash +for file in *.js; do + echo "Processing $file" +done +``` + +--- + +## 9. Differences from PowerShell + +| Task | PowerShell | Bash | +|------|------------|------| +| List files | `Get-ChildItem` | `ls -la` | +| Find files | `Get-ChildItem -Recurse` | `find . -type f` | +| Environment | `$env:VAR` | `$VAR` | +| String concat | `"$a$b"` | `"$a$b"` (same) | +| Null check | `if ($x)` | `if [ -n "$x" ]` | +| Pipeline | Object-based | Text-based | + +--- + +## 10. Error Handling + +### Set options + +```bash +set -e # Exit on error +set -u # Exit on undefined variable +set -o pipefail # Exit on pipe failure +set -x # Debug: print commands +``` + +### Trap for cleanup + +```bash +cleanup() { + echo "Cleaning up..." + rm -f /tmp/tempfile +} +trap cleanup EXIT +``` + +--- + +> **Remember:** Bash is text-based. Use `&&` for success chains, `set -e` for safety, and quote your variables! + +## When to Use +This skill is applicable to execute the workflow or actions described in the overview. diff --git a/.claude/skills/bash-linux b/.claude/skills/bash-linux new file mode 120000 index 0000000..75e13d3 --- /dev/null +++ b/.claude/skills/bash-linux @@ -0,0 +1 @@ +../../.agents/skills/bash-linux \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..2d9eb5b --- /dev/null +++ b/README.md @@ -0,0 +1,78 @@ +# Linux Scripts + +A collection of shell scripts for automating Linux system setup and configuration. + +## Usage + +Each script can be downloaded and executed directly with curl: + +```bash +curl -fsSL https://raw.githubusercontent.com/YOUR_USERNAME/LinuxScripts/main/PATH/TO/SCRIPT.sh | bash +``` + +Or clone the repo: + +```bash +git clone https://github.com/YOUR_USERNAME/LinuxScripts.git +cd LinuxScripts +bash PATH/TO/SCRIPT.sh +``` + +## Structure + +``` +LinuxScripts/ +├── README.md +├── core/ # Shared scripts/functions (planned) +│ └── .gitkeep +├── Kbuntu/ # Kubuntu (KDE Ubuntu) specific scripts +│ └── install-packages.sh # Installs common packages and configures KDE/Qt apps +├── Ubuntu/ # Ubuntu specific scripts (planned) +├── Fedora/ # Fedora specific scripts (planned) +└── ... +``` + +### Folder Conventions + +- **Distro-specific folders** (e.g., `Kbuntu/`, `Ubuntu/`, `Fedora/`): Scripts tailored to specific distributions +- **`core/`**: Planned location for shared script utilities, functions, and helpers that can be sourced by distro-specific scripts + +## Scripts + +### Kbuntu + +#### install-packages.sh + +Installs a curated set of packages and configures a fresh Kubuntu installation. + +**What it does:** +- Updates package lists and upgrades existing packages +- Installs: LibreOffice, FreeCAD, VLC, Thunderbird, Firefox, Ubuntu restricted extras, FFmpeg, Timeshift, HPLIP printer drivers, CUPS printing +- Configures automatic security updates via `unattended-upgrades` +- Installs a pre-apt Timeshift snapshot hook (auto-snapshot before package changes) +- Configures SDDM auto-login for the current user +- Sets up Plymouth bgrt boot splash (OEM logo + spinner) +- Enables and configures HP printer support + +**Usage:** +```bash +curl -fsSL https://raw.githubusercontent.com/YOUR_USERNAME/LinuxScripts/main/Kbuntu/install-packages.sh | bash +``` + +**Notes:** +- Run with `sudo` or as root +- Timeshift requires manual configuration after installation (`sudo timeshift-gtk`) +- SDDM auto-login is configured for the user running the script +- Plymouth bgrt theme requires UEFI firmware with embedded logo +- Log out and back in after running for lpadmin group to take effect + +## Contributing + +1. Add scripts to the appropriate distro folder (create one if it doesn't exist) +2. Scripts should be self-contained and idempotent where possible +3. Include a header comment describing what the script does +4. Test scripts in a VM before committing + +## License + +MIT diff --git a/core/.gitkeep b/core/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/skills-lock.json b/skills-lock.json new file mode 100644 index 0000000..34b99a5 --- /dev/null +++ b/skills-lock.json @@ -0,0 +1,10 @@ +{ + "version": 1, + "skills": { + "bash-linux": { + "source": "sickn33/antigravity-awesome-skills", + "sourceType": "github", + "computedHash": "6eae117aa43b64623628983fdb1bfa654cf7714646a579c882282655c7ef7942" + } + } +}