home / skills / vudovn / antigravity-kit / bash-linux

bash-linux skill

/.agent/skills/bash-linux

This skill helps you master Bash/Linux patterns and commands for efficient scripting, file handling, and process control on macOS and Linux.

npx playbooks add skill vudovn/antigravity-kit --skill bash-linux

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
4.1 KB
---
name: bash-linux
description: Bash/Linux terminal patterns. Critical commands, piping, error handling, scripting. Use when working on macOS or Linux systems.
allowed-tools: Read, Write, Edit, Glob, Grep, Bash
---

# 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!

Overview

This skill collects practical Bash and Linux terminal patterns for daily macOS/Linux work. It focuses on command chaining, file and process management, text processing, environment variables, networking, scripting templates, and robust error handling. Use it to speed up repetitive shell tasks and write safer scripts.

How this skill works

The skill summarizes common commands, operators, and idioms so you can copy or adapt them directly in a terminal or script. It explains what to use for listing files, searching text, managing processes, piping data, and handling errors. It also includes a minimal script template with safe options (set -euo pipefail) and useful helper functions for logging and cleanup.

When to use it

  • Running multi-step commands reliably (use && and ||)
  • Searching and transforming text across files (grep, sed, awk)
  • Writing portable shell scripts with error handling and traps
  • Managing processes, ports, and background jobs on a developer machine
  • Debugging and inspecting system state (disk usage, network, environment vars)

Best practices

  • Quote variables to avoid word splitting and globbing ("$var")
  • Use set -euo pipefail in scripts to fail fast and avoid silent errors
  • Prefer command -v to check for availability before use
  • Use traps for cleanup and set -x only while debugging
  • Chain with && for dependent steps and || for fallback actions

Example use cases

  • Install dependencies and start a dev server: npm install && npm run dev
  • Find and replace across files: grep -rl "TODO" src/ | xargs sed -i 's/old/new/g'
  • Free a port used by a process: kill -9 $(lsof -t -i :3000)
  • Create a robust script: include set -euo pipefail, log helpers, and a trap for cleanup
  • Stream logs and search in real time: tail -f log.txt | grep -i ERROR

FAQ

How do I safely edit files in-place across macOS and Linux?

Use sed carefully: Linux sed supports -i without extension, macOS requires an argument (e.g., -i '' ). For portability, prefer a temporary file pattern: sed 's/a/b/g' file > file.tmp && mv file.tmp file.

When should I use && vs ; in command chains?

Use && when the next command should run only on success of the previous command. Use ; when commands are independent and should run regardless of prior exit status.