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