📖 Guide

Bash — Complete Reference

Comprehensive Bash cheat sheet covering variables, strings, arrays, conditionals, loops, functions, file tests, I/O redirection, process management, and more.

166 commands across 11 categories

Variables

CommandDescription
NAME="value"
Assign a variable (no spaces around =)
echo "$NAME"
Access variable value (double quotes preserve spaces)
echo "${NAME}"
Access variable with braces (for clarity/concatenation)
readonly PI=3.14
Declare a read-only (constant) variable
unset NAME
Remove a variable
export NAME="value"
Export variable to child processes
local var="value"
Declare local variable inside a function
${NAME:-default}
e.g. echo "${USER:-anonymous}"
Use default if variable is unset or empty
${NAME:=default}
Assign default if variable is unset or empty
${NAME:+alt}
e.g. echo "${DEBUG:+--verbose}"
Use alt value if variable IS set
${NAME:?error msg}
Exit with error if variable is unset
$0, $1, $2 ...
Script name ($0) and positional arguments
$#
Number of arguments passed to script
$@
All arguments as separate words
$*
All arguments as a single string
$?
Exit status of last command (0 = success)
$$
PID of the current shell
$!
PID of last background process

String Operations

CommandDescription
${#string}
e.g. name="hello"; echo ${#name} # 5
Length of string
${string:offset:length}
e.g. echo ${name:1:3} # ell
Substring extraction
${string#pattern}
e.g. f="file.tar.gz"; echo ${f#*.} # tar.gz
Remove shortest match from beginning
${string##pattern}
e.g. echo ${f##*.} # gz
Remove longest match from beginning
${string%pattern}
e.g. echo ${f%.*} # file.tar
Remove shortest match from end
${string%%pattern}
e.g. echo ${f%%.*} # file
Remove longest match from end
${string/old/new}
Replace first occurrence
${string//old/new}
Replace all occurrences
${string^}
Uppercase first character
${string^^}
Uppercase all characters
${string,}
Lowercase first character
${string,,}
Lowercase all characters

Arrays

CommandDescription
arr=(one two three)
Declare an indexed array
arr[0]="value"
Assign value to specific index
echo "${arr[0]}"
Access element by index
echo "${arr[@]}"
All elements
echo "${#arr[@]}"
Number of elements
arr+=("new")
Append element to array
unset arr[1]
Remove element at index
echo "${arr[@]:1:2}"
Slice: 2 elements starting from index 1
echo "${!arr[@]}"
All indices of the array
for item in "${arr[@]}"; do echo "$item"; done
Iterate over array elements
declare -A map
Declare an associative array (dictionary)
map[key]="value"
Set value in associative array
echo "${!map[@]}"
All keys of associative array

Conditionals

CommandDescription
if [[ condition ]]; then ... elif ...; then ... else ... fi
If-elif-else block
[[ -z "$str" ]]
True if string is empty
[[ -n "$str" ]]
True if string is not empty
[[ "$a" == "$b" ]]
String equality
[[ "$a" != "$b" ]]
String inequality
[[ "$a" =~ regex ]]
e.g. [[ "$email" =~ ^[a-z]+@[a-z]+\.[a-z]+$ ]]
Regex match
[[ "$a" < "$b" ]]
String less than (lexicographic)
[[ $a -eq $b ]]
Numeric equality
[[ $a -ne $b ]]
Numeric inequality
[[ $a -lt $b ]]
Numeric less than
[[ $a -le $b ]]
Numeric less than or equal
[[ $a -gt $b ]]
Numeric greater than
[[ $a -ge $b ]]
Numeric greater than or equal
[[ cond1 && cond2 ]]
Logical AND
[[ cond1 || cond2 ]]
Logical OR
[[ ! condition ]]
Logical NOT
case "$var" in pattern) cmd ;; *) default ;; esac
Case statement (pattern matching)

Loops

CommandDescription
for i in 1 2 3; do echo $i; done
For loop over list
for i in {1..10}; do echo $i; done
For loop with brace expansion
for i in {0..100..5}; do echo $i; done
Brace expansion with step
for ((i=0; i<10; i++)); do echo $i; done
C-style for loop
for f in *.txt; do echo "$f"; done
Loop over files matching glob
while [[ condition ]]; do ...; done
While loop
while read -r line; do echo "$line"; done < file.txt
Read file line by line
until [[ condition ]]; do ...; done
Until loop (runs while condition is false)
break
Exit the current loop
continue
Skip to next iteration
while true; do ...; sleep 1; done
Infinite loop
select opt in "A" "B" "Quit"; do case $opt in ...
Select menu (interactive choice)

Functions

CommandDescription
function_name() { commands; }
Define a function
function name { commands; }
Alternative function syntax
function_name arg1 arg2
Call function with arguments
$1, $2 ... inside function
Access function arguments
local var="value"
Declare local variable (scoped to function)
return 0
Return exit status from function (0-255)
result=$(function_name)
e.g. greet() { echo "Hello"; }; msg=$(greet)
Capture function output
trap 'cleanup' EXIT
Run cleanup function on script exit
trap 'echo caught' SIGINT
Handle Ctrl+C signal
set -e
Exit immediately on error
set -u
Treat unset variables as errors
set -o pipefail
Pipe fails if any command fails

File Tests

CommandDescription
[[ -e file ]]
True if file exists
[[ -f file ]]
True if regular file exists
[[ -d dir ]]
True if directory exists
[[ -L file ]]
True if symbolic link exists
[[ -r file ]]
True if file is readable
[[ -w file ]]
True if file is writable
[[ -x file ]]
True if file is executable
[[ -s file ]]
True if file is not empty (size > 0)
[[ -p file ]]
True if file is a named pipe
[[ file1 -nt file2 ]]
True if file1 is newer than file2
[[ file1 -ot file2 ]]
True if file1 is older than file2

I/O Redirection

CommandDescription
cmd > file
Redirect stdout to file (overwrite)
cmd >> file
Redirect stdout to file (append)
cmd 2> file
Redirect stderr to file
cmd &> file
Redirect both stdout and stderr to file
cmd 2>&1
Redirect stderr to stdout
cmd < file
Read stdin from file
cmd1 | cmd2
Pipe stdout of cmd1 to stdin of cmd2
cmd1 |& cmd2
Pipe both stdout and stderr to cmd2
cat <<EOF\ntext\nEOF
Here document — multi-line input
cmd <<< "string"
Here string — pass string as stdin
exec 3> file
Open file descriptor 3 for writing
echo "data" >&3
Write to file descriptor 3
exec 3>&-
Close file descriptor 3
cmd > /dev/null 2>&1
Suppress all output
tee file
e.g. cmd | tee output.log
Read stdin, write to stdout AND file

Process Management

CommandDescription
cmd &
Run command in background
jobs
List background jobs
fg %1
Bring job 1 to foreground
bg %1
Resume stopped job in background
kill PID
Send SIGTERM to process
kill -9 PID
Send SIGKILL (force kill)
kill -0 PID
Check if process is running (exit 0 = alive)
wait
Wait for all background jobs to finish
wait $PID
Wait for specific process to finish
nohup cmd &
Run command immune to hangup signal
ps aux
List all running processes
ps aux | grep pattern
Find processes by name
pgrep -f pattern
Get PIDs matching pattern
pkill -f pattern
Kill processes matching pattern
top / htop
Interactive process viewer
cmd1 && cmd2
Run cmd2 only if cmd1 succeeds
cmd1 || cmd2
Run cmd2 only if cmd1 fails
(cmd1; cmd2)
Run commands in a subshell
{ cmd1; cmd2; }
Group commands in current shell

Text Processing

CommandDescription
grep "pattern" file
Search for pattern in file
grep -r "pattern" dir/
Recursive search in directory
grep -i "pattern" file
Case-insensitive search
grep -n "pattern" file
Show line numbers
grep -c "pattern" file
Count matching lines
grep -v "pattern" file
Invert match (non-matching lines)
grep -E "regex" file
Extended regex (egrep)
sed 's/old/new/g' file
e.g. sed -i 's/foo/bar/g' file.txt # in-place edit
Replace all occurrences in file
sed -n '5,10p' file
Print lines 5-10
sed '/pattern/d' file
Delete lines matching pattern
awk '{print $1}' file
Print first field of each line
awk -F: '{print $1}' /etc/passwd
Use custom field separator
awk 'NR==5' file
Print 5th line
sort file
Sort lines alphabetically
sort -n file
Sort numerically
sort -u file
Sort and remove duplicates
uniq
e.g. sort file | uniq -c # count occurrences
Remove adjacent duplicate lines
cut -d',' -f1,3 file
Extract fields 1 and 3 (comma-delimited)
wc -l file
Count lines in file
head -n 20 file
Show first 20 lines
tail -n 20 file
Show last 20 lines
tail -f file
Follow file (live updates)
tr 'a-z' 'A-Z'
e.g. echo "hello" | tr 'a-z' 'A-Z' # HELLO
Translate characters
xargs
e.g. find . -name "*.log" | xargs rm
Build command from stdin

Script Best Practices

CommandDescription
#!/bin/bash
Shebang line — specify interpreter
#!/usr/bin/env bash
Portable shebang (finds bash in PATH)
set -euo pipefail
Strict mode: exit on error, unset vars, pipe fails
"$variable"
Always quote variables to prevent word splitting
[[ ]] vs [ ]
Prefer [[ ]] (no word splitting, supports regex/&&/||)
$(command)
Command substitution (preferred over backticks)
$((expression))
e.g. echo $((5 + 3 * 2)) # 11
Arithmetic expansion
shellcheck script.sh
Lint bash scripts for common errors
mktemp
e.g. tmpfile=$(mktemp); echo "data" > "$tmpfile"
Create a secure temporary file
getopts "ab:c" opt
e.g. while getopts "v:o:" opt; do case $opt in v) VER=$OPTARG;; esac; done
Parse command-line options
date +"%Y-%m-%d %H:%M:%S"
Format current date/time
dirname "$0" / basename "$0"
Get directory/filename of script
command -v prog
e.g. command -v git &>/dev/null || echo "git not found"
Check if a command exists (portable)

More Guides

🌿
Git Commands
Complete Git command reference — from basics to advanced workflows. Searchable, with examples.
📝
Vim Commands
Complete Vim/Vi command reference — modes, motions, editing, search, and advanced features.
🐳
Docker Commands
Complete Docker & Docker Compose command reference — containers, images, volumes, networks, and orchestration.
🔤
Regex Reference
Complete regular expression reference — syntax, patterns, quantifiers, groups, lookaheads, and common recipes.
🐧
Linux Commands
Complete Linux/Bash command reference — file management, text processing, networking, system admin, and shell scripting.
☸️
Kubernetes Commands
Complete Kubernetes & kubectl command reference — pods, deployments, services, configmaps, and cluster management.
🐍
Python Reference
Complete Python reference — syntax, data structures, string methods, file I/O, comprehensions, and common patterns.
🗃️
SQL Reference
Complete SQL reference — queries, joins, aggregation, subqueries, indexes, and database management.
🌐
Nginx Reference
Complete Nginx configuration reference — server blocks, locations, proxying, SSL, load balancing, and caching.
🔐
SSH Commands
Complete SSH reference — connections, key management, tunneling, config, SCP/SFTP, and security hardening.
👷
Jenkins Reference
Complete Jenkins reference — pipeline syntax, Jenkinsfile, plugins, CLI, agents, and CI/CD patterns.
📨
HTTP Headers Reference
Complete HTTP headers reference — request headers, response headers, caching, security, CORS, and content negotiation. Searchable, with examples.
🐘
PostgreSQL Reference
Comprehensive PostgreSQL reference — from connection basics to advanced features like JSONB, full-text search, window functions, and performance tuning.
Async Patterns Reference
Multi-language async/concurrency patterns — JavaScript, Python, Go, Rust, Java, and universal concurrency patterns.
📡
Protobuf & gRPC Reference
Comprehensive reference for Protocol Buffers (proto3) and gRPC — message definitions, services, streaming, and common patterns.
📚
JS Array Methods
Complete JavaScript Array methods reference — creating, searching, transforming, sorting, iterating, and common patterns. Searchable, with examples.
🌊
Tailwind CSS Reference
Complete Tailwind CSS reference — layout, spacing, typography, colors, responsive design, states, and common patterns. Searchable, with examples.
GraphQL Reference
Complete GraphQL reference — schema definition, types, queries, mutations, directives, fragments, and common patterns. Searchable, with examples.
💻
VS Code Shortcuts
Complete VS Code keyboard shortcuts — editing, navigation, search, multi-cursor, terminal, debug, and more. Searchable, with Cmd/Ctrl notation.
🔲
CSS Grid Reference
Complete CSS Grid reference — container properties, item placement, grid functions, and common layout patterns. Searchable, with examples.
📦
CSS Flexbox Reference
Complete CSS Flexbox reference — container properties, item properties, and common layout patterns. Searchable, with examples.
⚛️
React Hooks Reference
Complete React Hooks reference — useState, useEffect, useContext, custom hooks, and common patterns. Searchable, with examples.
🔷
TypeScript Reference
Complete TypeScript reference — types, interfaces, generics, utility types, and advanced patterns. Searchable, with examples.
☁️
AWS CLI Reference
Complete AWS CLI reference — EC2, S3, IAM, Lambda, ECS, RDS, CloudFormation, and common operations.
🐹
Go Reference
Complete Go (Golang) reference — syntax, types, functions, concurrency, error handling, and common patterns.
💠
PowerShell Reference
Complete PowerShell reference — cmdlets, pipelines, scripting, file operations, remote management, and Active Directory.
💾
Redis Commands
Complete Redis command reference — strings, hashes, lists, sets, sorted sets, pub/sub, transactions, and server management.
🏗️
Terraform Commands
Complete Terraform reference — init, plan, apply, state management, modules, workspaces, and HCL syntax.
⚙️
Ansible Commands
Complete Ansible reference — playbooks, modules, inventory, roles, vault, and ad-hoc commands.
🟨
JavaScript
Complete JavaScript reference — variables, types, operators, strings, arrays, objects, functions, async, DOM, ES6+, and more.
🎨
CSS
Complete CSS reference — selectors, box model, positioning, typography, animations, media queries, custom properties, and more.
📄
HTML
Complete HTML reference — document structure, text content, forms, media, semantic elements, accessibility, and more.
Java
Complete Java reference — data types, strings, collections, OOP, interfaces, exceptions, file I/O, streams, lambdas, and more.
🦀
Rust
Comprehensive Rust language cheat sheet covering ownership, traits, pattern matching, concurrency, and more.
📝
Markdown
Complete Markdown syntax reference for headings, formatting, links, tables, code blocks, and extensions.
📋
YAML
YAML syntax reference covering scalars, collections, anchors, multi-line strings, and common patterns.
🌐
Curl
Curl command-line reference for HTTP requests, authentication, file transfers, debugging, and common API patterns.
Cron
Cron scheduling reference covering syntax, field values, crontab management, and common schedule patterns.
🖥️
Tmux
Terminal multiplexer for managing multiple sessions, windows, and panes from a single terminal.
🔧
Awk
Powerful text processing language for pattern scanning, data extraction, and report generation.
✂️
Sed
Stream editor for filtering and transforming text, line by line.
🔍
Find
Search for files and directories in a directory hierarchy with powerful filtering options.
🔎
Grep
Search text using patterns. Filter lines from files, command output, or streams with regular expressions.
🐘
PHP
Complete PHP cheat sheet covering syntax, OOP, arrays, PDO, and modern PHP 8.x features.
⚙️
C
Complete C programming cheat sheet covering syntax, pointers, memory management, and standard library.
🔷
C++
Complete C++ cheat sheet covering STL containers, OOP, templates, smart pointers, and modern C++ features.
🐬
MySQL
Complete MySQL cheat sheet covering queries, joins, indexes, transactions, and administration.
💅
Sass
Complete Sass/SCSS cheat sheet covering variables, mixins, functions, nesting, and modern module system.
🔐
Chmod
Linux file permission commands and patterns for chmod.
🔢
NumPy
Essential NumPy commands for array manipulation and numerical computing in Python.
🐼
Pandas
Pandas cheat sheet for data manipulation, analysis, and transformation in Python.
🎯
Dart
Dart language cheat sheet covering syntax, types, OOP, null safety, and async patterns.
🔺
Laravel
Laravel PHP framework cheat sheet for routing, Eloquent, Blade, Artisan, and more.
🟩
Node.js
Comprehensive Node.js runtime reference covering modules, file system, HTTP, streams, and more.
Next.js
Next.js App Router reference covering routing, data fetching, server components, and deployment.
🍃
MongoDB
MongoDB reference covering CRUD operations, aggregation, indexes, and administration.
🔥
Firebase
Firebase reference covering Authentication, Firestore, Realtime Database, Cloud Functions, and Hosting.
🐳
Docker Compose
Docker Compose reference covering CLI commands, service configuration, networking, volumes, and more.
💲
jQuery
Quick reference for jQuery selectors, DOM manipulation, events, AJAX, and more.
📐
LaTeX
Quick reference for LaTeX document structure, math mode, formatting, and common packages.
🎯
XPath
Quick reference for XPath expressions, axes, predicates, and functions for XML/HTML querying.
Emmet
Quick reference for Emmet abbreviations for lightning-fast HTML and CSS coding.
📦
TOML
Quick reference for TOML configuration file syntax, types, tables, and common patterns.
💎
Prisma
Complete Prisma ORM cheat sheet — schema, queries, migrations, and CLI.
🤖
GitHub Actions
Complete GitHub Actions cheat sheet — workflows, triggers, jobs, and CI/CD patterns.
📦
npm
Complete npm cheat sheet — package management, scripts, publishing, and configuration.
Supabase
Complete Supabase cheat sheet — auth, database, realtime, storage, and edge functions.
🪶
Apache
Complete Apache HTTP Server cheat sheet — virtual hosts, modules, rewrite rules, and SSL.
📡
HTTP Status Codes
Complete reference of all standard HTTP response status codes with descriptions and use cases.
🔤
ASCII Table
Complete ASCII character reference with decimal, hexadecimal, and character values.
🔧
Chrome DevTools
Essential Chrome DevTools shortcuts, commands, and workflows for web developers.
💧
Drizzle ORM
Complete Drizzle ORM reference for schema definition, queries, relations, migrations, and common patterns.
Vercel CLI
Complete Vercel CLI reference for deployment, project management, domains, environment variables, and configuration.
🔄
PM2
Production process manager for Node.js applications with built-in load balancer, monitoring, and zero-downtime reloads.
📺
Screen
GNU Screen terminal multiplexer for persistent sessions, window management, and remote work.
📦
Webpack
Module bundler for JavaScript applications — loaders, plugins, code splitting, optimization, and dev server.
Vite
Next-generation frontend build tool with instant HMR, native ES modules, and optimized production builds via Rollup.

📖 Free, searchable command reference. Bookmark this page for quick access.