kill -TERM <verified-task-PID>; verify exit, escalate only if necessary
Find port user
lsof -i :3000
Inspect port owner
lsof -nP -iTCP:3000 -sTCP:LISTEN; verify ownership before stopping
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
Preview replacement
sed 's/old/new/g' file.txt (in-place flags differ on macOS/GNU)
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 only with non-secret inputs; prints expanded arguments
Remember: Bash is text-based. Use && for success chains and quote variables. set -e has conditional/pipeline exceptions; explicitly check consequential operations and never infer complete safety from shell flags.
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
Limitations
Use this skill only when the task clearly matches the scope described above.
Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.