Skip to content
Back to skills

Bash Linux

ASecurity

Use when Bash/Linux terminal mastery. Shell scripting, piping, stream redirection, process substitution, strict mode (set -euo pipefail), AWK, ripgrep parsing, and robust error handling. Use when writing CI scripts, debugging POSIX environments, or manipulating text pipelines.

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
ai-agentsrustgoshellbashnodedebugginggitapidevopsci/cd

Works with

  • terminal
  • cli
  • api

Security analysis

A93/100
  • highPerforms destructive filesystem operations

Pro shows the line behind each finding and how to fix it

Scanned September 27, 2026

npx -y skills add Harmitx7/tribunal-kit --skill bash-linux --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Bash Linux?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Bash Linux
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/harmitx7-bash-linux-tribunal-kit/badge)](https://www.skillsdirectory.com/skills/harmitx7-bash-linux-tribunal-kit)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: bash-linux
description: "Use when Bash/Linux terminal mastery. Shell scripting, piping, stream redirection, process substitution, strict mode (set -euo pipefail), AWK, ripgrep parsing, and robust error handling. Use when writing CI scripts, debugging POSIX environments, or manipulating text pipelines."
version: 5.0.0
last-updated: 2026-09-13
skills:
  - server-management
  - devops-engineer
  - cicd-pro
tools: Read, Grep, Glob, Bash, Edit, Write
scripts-binding:
  - .agent/scripts/lint_runner.js
  - .agent/scripts/verify_all.js
---

# Bash & Linux β€” Shell Scripting Mastery

---

## πŸ› οΈ Technical Architecture & Reference Recipes

---

## Hallucination Traps (Read First)

- ❌ Scripts without `set -euo pipefail` -> βœ… Always enable strict mode to catch silent failures
- ❌ Using `[ ]` instead of `[[ ]]` for conditionals -> βœ… `[[ ]]` handles spaces in variables and supports regex
- ❌ Parsing `ls` output -> βœ… Use `find` or glob expansion instead; `ls` output is not portable
- ❌ `cat file | grep` (useless use of cat) -> βœ… `grep pattern file` directly

---

---

## 1. Bash Strict Mode (Mandatory)

Always start every single bash script with strict compilation flags.

```bash
#!/usr/bin/env bash

# ❌ BAD: Default bash execution
# - Undefined variables evaluate to empty strings
# - Failed commands are ignored, execution continues blindly
# - Piped failures are hidden (only last command exit code matters)

# βœ… GOOD: Strict Mode
set -euo pipefail
IFS=$'\n\t'

# -e: Exit immediately if a command exits with a non-zero status.
# -u: Treat unset variables as an error and exit immediately.
# -o pipefail: Pipeline returns the status of the rightmost command to exit with a non-zero status.
# IFS: Only split on newlines and tabs, not spaces (prevents terrifying globbing/array bugs).

# Example: Catching potential disasters
unset MY_VAR
rm -rf "/some/path/${MY_VAR}" # With 'set -u', this throws an error instead of running 'rm -rf /some/path/'
```

---

## 2. Advanced Stream Manipulation

Piping allows passing stdout from one program into stdin of another.

```bash
# ❌ VULNERABLE: Useless Use of Cat (UUOC)
cat file.txt | grep "error"

# βœ… EFFICIENT: Direct parsing
grep "error" file.txt
# Or modern ripgrep for huge repositories:
rg "error" file.txt

# Process Substitution: Treating tool outputs as if they were files
# Compare two remote JSON responses without writing to disk
diff <(curl -s api.com/v1) <(curl -s api.com/v2)

# Redirection Mastery
# 1> stdout, 2> stderr
command > output.txt 2> error.txt   # Split streams
command > all.txt 2>&1              # Combine streams (POSIX)
command &> all.txt                  # Combine streams (Bash shortcut)
command >/dev/null 2>&1             # Subdue all output cleanly
```

---

## 3. AWK and Stream Formatting

AWK is a complete programming language designed for text processing.

```bash
# Example: We have a ps aux output and we want the PIDs (column 2) of all Node processes
ps aux | grep node | awk '{print $2}'

# Example: Summing numbers in column 3 from a CSV
cat data.csv | awk -F ',' '{sum+=$3} END {print sum}'

# Extracting specific lines (e.g. line 5 to 10)
sed -n '5,10p' file.txt
```

---

## 4. Modern CLI Alternatives (The 2026 Stack)

Standard POSIX tools are reliable but slow. Use modern Rust-based alternatives when available in CI/CD.

| Task               | Legacy POSIX          | Modern Alternative | Why?                                                          |
| :----------------- | :-------------------- | :----------------- | :------------------------------------------------------------ |
| Find files         | `find . -name "*.ts"` | `fd -e ts`         | Context-aware, respects `.gitignore`, 10x faster.             |
| Search text        | `grep -r "auth"`      | `rg "auth"`        | Ripgrep uses multi-threading and SIMD instructions.           |
| Inspect JSON       | `grep / awk`          | `jq '.users[].id'` | `jq` explicitly parses and filters valid JSON arrays/objects. |
| Process monitoring | `top`                 | `htop` / `btm`     | Interactive metrics.                                          |
| Check curl         | `curl -i`             | `httpie` / `xh`    | Colorized, structured JSON networking.                        |

---

## 5. File System Traps & Quoting

If a filename contains a space and you didn't quote your variable, your script will crash or delete the wrong files.

```bash
# Let FILE="my backup.tar"

# ❌ BAD: Evaluates as `rm my` AND `backup.tar` -> Two different files!
rm $FILE

# βœ… GOOD: Always quote string variables
rm "$FILE"

# βœ… GOOD: Array iteration (Using quotes specifically formatted with @)
FILES=("file 1.txt" "file 2.txt")
for file in "${FILES[@]}"; do
  echo "Processing: $file"
done
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…