bash-linux

xenitV1's avatarfrom xenitV1

Bash/Linux terminal patterns. Critical commands, piping, error handling, scripting. Use when working on macOS or Linux systems.

103stars🔀17forks📁View on GitHub🕐Updated Jan 8, 2026

When & Why to Use This Skill

This Claude skill provides a comprehensive library of Bash and Linux terminal patterns, enabling users to master command-line operations, automate system tasks, and build robust shell scripts. It streamlines workflows on macOS and Linux by offering optimized syntax for file manipulation, process management, and text processing, while ensuring reliability through advanced error-handling techniques and standardized script templates.

Use Cases

  • Automating File System Operations: Efficiently find, filter, and manipulate files using advanced globbing, grep, and piping patterns to handle bulk data tasks.
  • System and Process Management: Monitor system resources, manage background jobs, and troubleshoot port conflicts or runaway processes using professional CLI tools.
  • Developing Robust Automation Scripts: Create production-ready Bash scripts using standardized templates that include logging, error trapping (set -euo pipefail), and cleanup routines.
  • Advanced Text and Data Processing: Extract, sort, and transform data from logs, CSVs, or command outputs using powerful utilities like awk, sed, and cut.
  • Network Troubleshooting and API Interaction: Test connectivity, check open ports, and perform HTTP requests directly from the terminal using curl and nc for rapid debugging.
namebash-linux
descriptionBash/Linux terminal patterns. Critical commands, piping, error handling, scripting. Use when working on macOS or Linux systems.
allowed-toolsRead, 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

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

if command -v node &> /dev/null; then
    echo "Node is installed"
fi

Default variable value

NAME=${1:-"default_value"}

Read file line by line

while IFS= read -r line; do
    echo "$line"
done < file.txt

Loop over files

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

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

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!