chore: add bash-linux skill documentation and README structure
This commit is contained in:
@@ -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 <PID>` |
|
||||||
|
| 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.
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
../../.agents/skills/bash-linux
|
||||||
@@ -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
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"skills": {
|
||||||
|
"bash-linux": {
|
||||||
|
"source": "sickn33/antigravity-awesome-skills",
|
||||||
|
"sourceType": "github",
|
||||||
|
"computedHash": "6eae117aa43b64623628983fdb1bfa654cf7714646a579c882282655c7ef7942"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user