889 commands · 48 cheat sheets · 6 subcategories
Linux master quick reference
Browse 223 commands from 12 focused cheat sheets on page 1 of 4. Each example opens its matching detailed section.
Shell, Files, and Automation · 20 commands
Bash Scripting Cheat Sheet
| Use | Syntax | Examples |
|---|---|---|
| Select Bash through PATH | #!/usr/bin/env bash | View examples |
| Enable stricter failure handling | set -Eeuo pipefail | View examples |
| Read an argument | input=${1:?usage: script INPUT} | View examples |
| Supply a default | mode=${MODE:-safe} | View examples |
| Preserve one argument | printf '%s\n' "$filename" | View examples |
| Create an array | files=("report one.txt" "report two.txt") | View examples |
| Pass every array member | command -- "${files[@]}" | View examples |
| Read a literal line | IFS= read -r line | View examples |
| Process a file line by line | while IFS= read -r line; do printf '%s\n' "$line"; done \
< input.txt | View examples |
| Test a regular file | if [[ -f $path ]]; then process "$path"; fi | View examples |
| Compare integers | if (( count > 10 )); then printf 'large\n'; fi | View examples |
| Match alternatives | case $mode in safe|fast) run "$mode" ;; *) exit 2 ;; \
esac | View examples |
| Define a function | log() { printf '%s\n' "$*" >&2; } | View examples |
| Keep function state local | local path=$1 | View examples |
| Parse short options | while getopts ':o:v' option; do case $option in o) \
output=$OPTARG ;; v) verbose=1 ;; esac; done | View examples |
| Remove parsed options | shift "$((OPTIND - 1))" | View examples |
| Create a temporary directory | workdir=$(mktemp -d) | View examples |
| Clean up on exit | trap 'rm -rf -- "$workdir"' EXIT | View examples |
| Check syntax | bash -n script.sh | View examples |
| Run static analysis | shellcheck script.sh | View examples |
Shell, Files, and Automation · 18 commands
Cron, at, and Anacron Scheduling Cheat Sheet
| Use | Syntax | Examples |
|---|---|---|
| List personal crontab | crontab -l | View examples |
| Edit personal crontab | crontab -e | View examples |
| Validate a Cronie table | crontab -T ./app.crontab | View examples |
| Install a reviewed table | crontab ./app.crontab | View examples |
| Run on weekday mornings | 15 6 * * 1-5 /usr/local/bin/report-job | View examples |
| Run every 15 minutes | */15 * * * * /usr/local/bin/health-sample | View examples |
| Select Cronie timezone | CRON_TZ=UTC | View examples |
| Set a deterministic PATH | PATH=/usr/local/bin:/usr/bin:/bin | View examples |
| Define a system cron job | 20 2 * * * backup /usr/local/libexec/app-backup | View examples |
| Prevent overlapping runs | flock -n /run/user/1000/report.lock \
/usr/local/bin/report-job | View examples |
| Queue commands from a file | at -f ./maintenance.sh 02:30 tomorrow | View examples |
| List queued at jobs | atq | View examples |
| Inspect an at job | at -c 42 | View examples |
| Remove an at job | atrm 42 | View examples |
| Queue for low load | batch -f ./index-rebuild.sh | View examples |
| Define a weekly catch-up job | 7 20 app-weekly /usr/local/libexec/app-weekly | View examples |
| Validate anacrontab | sudo anacron -T -t /etc/anacrontab | View examples |
| Run one due job in foreground | sudo anacron -d -s app-weekly | View examples |
Shell, Files, and Automation · 20 commands
Linux Archives and Compression Cheat Sheet
| Use | Syntax | Examples |
|---|---|---|
| Create a tar archive | tar -cf project.tar project/ | View examples |
| Archive relative names | tar -C /srv/app -cf app.tar config public | View examples |
| Exclude generated files | tar --exclude='*.log' --exclude='cache/' -cf app.tar \
app/ | View examples |
| List archive members | tar -tf project.tar | View examples |
| Inspect stored metadata | tar -tvf project.tar | View examples |
| Extract an archive | tar -xf project.tar -C destination/ | View examples |
| Extract one member | tar -xf project.tar project/README.md | View examples |
| Remove a leading directory | tar -xf release.tar -C destination/ --strip-components=1 | View examples |
| Ignore stored ownership | tar -xf backup.tar -C destination/ --no-same-owner | View examples |
| Create a gzip tarball | tar -czf project.tar.gz project/ | View examples |
| Create an xz tarball | tar -cJf project.tar.xz project/ | View examples |
| Select compression by suffix | tar -caf project.tar.gz project/ | View examples |
| Extract compressed tar | tar -xf project.tar.gz -C destination/ | View examples |
| Compress and keep a file | gzip -k report.csv | View examples |
| Decompress to standard output | gzip -dc report.csv.gz | head | View examples |
| Compress with xz | xz -k report.csv | View examples |
| Test gzip integrity | gzip -t project.tar.gz | View examples |
| Test xz integrity | xz -t project.tar.xz | View examples |
| Verify a checksum file | sha256sum --check project.tar.gz.sha256 | View examples |
| Review before extraction | file release.tar.gz && gzip -t release.tar.gz && tar -tf \
release.tar.gz | View examples |
Shell, Files, and Automation · 14 commands
Linux Environment Variables and Shell Startup Cheat Sheet
| Use | Syntax | Examples |
|---|---|---|
| Print exported values | printenv | View examples |
| Read one variable | printenv PATH | View examples |
| Set a shell variable | mode=development | View examples |
| Export to children | export MODE=development | View examples |
| Scope to one command | MODE=development ./app | View examples |
| Remove a variable | unset MODE | View examples |
| Prepend a PATH directory | export PATH="$HOME/.local/bin:$PATH" | View examples |
| Resolve a command | command -v python3 | View examples |
| Start clean | env -i PATH=/usr/bin:/bin HOME="$HOME" command | View examples |
| Inspect locale | locale | View examples |
| List locales | locale -a | View examples |
| Inspect manager environment | systemctl show-environment | View examples |
| Set a unit variable | Environment=APP_MODE=production | View examples |
| Load an environment file | EnvironmentFile=/etc/myapp/environment | View examples |
Shell, Files, and Automation · 22 commands
Linux Files and Directories Cheat Sheet
| Use | Syntax | Examples |
|---|---|---|
| Show the current directory | pwd | View examples |
| List directory contents | ls -lah | View examples |
| Change directory | cd /var/log | View examples |
| Move to the parent | cd .. | View examples |
| Return home | cd ~ | View examples |
| Create nested directories | mkdir -p project/src/components | View examples |
| Create an empty file | touch notes.txt | View examples |
| Identify a file type | file archive.tar.gz | View examples |
| Print a text file | cat notes.txt | View examples |
| Read the first lines | head -n 20 app.log | View examples |
| Read the last lines | tail -n 20 app.log | View examples |
| Follow a growing log | tail -f app.log | View examples |
| Copy a file safely | cp -i config.ini config.ini.bak | View examples |
| Copy a directory tree | cp -a project project-backup | View examples |
| Move or rename an item | mv -i draft.txt final.txt | View examples |
| Find files by name | find . -type f -name '*.json' | View examples |
| Find recently changed files | find . -type f -mtime -7 | View examples |
| Search text recursively | grep -RIn --exclude-dir=.git 'TODO' . | View examples |
| Measure directory size | du -sh project | View examples |
| Remove a file interactively | rm -i obsolete.txt | View examples |
| Remove an empty directory | rmdir empty-directory | View examples |
| Remove a directory tree | rm -rI build-output | View examples |
Shell, Files, and Automation · 20 commands
Linux Text Processing Cheat Sheet
| Use | Syntax | Examples |
|---|---|---|
| Find matching lines | grep 'ERROR' app.log | View examples |
| Match literal text | grep -F 'user[id]' app.log | View examples |
| Ignore letter case | grep -i 'warning' app.log | View examples |
| Show line numbers | grep -n 'timeout' app.log | View examples |
| Exclude matching lines | grep -v '^#' settings.conf | View examples |
| Use extended patterns | grep -E 'ERROR|WARN' app.log | View examples |
| Replace the first match | sed 's/http:/https:/' links.txt | View examples |
| Replace every match | sed 's/[[:space:]]\{1,\}/ /g' notes.txt | View examples |
| Remove matching lines | sed '/^[[:space:]]*$/d' notes.txt | View examples |
| Print selected fields | awk -F',' '{print $1, $3}' records.csv | View examples |
| Filter numeric fields | awk -F',' '$3 >= 80 {print $1, $3}' scores.csv | View examples |
| Sum a column | awk -F',' 'NR > 1 {sum += $3} END {print sum}' sales.csv | View examples |
| Extract delimited fields | cut -d: -f1,7 /etc/passwd | View examples |
| Sort text | sort names.txt | View examples |
| Sort numerically | sort -t, -k2,2n scores.csv | View examples |
| Count repeated lines | sort statuses.txt | uniq -c | View examples |
| Convert letter case | tr '[:lower:]' '[:upper:]' < names.txt | View examples |
| Delete characters | tr -d '\r' < windows.txt | View examples |
| Count lines | wc -l < app.log | View examples |
| Summarize a field | awk -F',' 'NR > 1 {print $2}' requests.csv |
sort |
uniq -c |
sort -nr | View examples |
Shell, Files, and Automation · 17 commands
rsync and Incremental Backups Cheat Sheet
| Use | Syntax | Examples |
|---|---|---|
| Copy directory contents | rsync -a /srv/app/ /backup/app/ | View examples |
| Copy directory by name | rsync -a /srv/app /backup/ | View examples |
| Preserve ACLs and xattrs | sudo rsync -aAX /srv/app/ /backup/app/ | View examples |
| Stay on one filesystem | rsync -a --one-file-system /srv/ /backup/srv/ | View examples |
| Preview itemized changes | rsync -ain /srv/app/ /backup/app/ | View examples |
| Read exclude patterns | rsync -a --exclude-from=/etc/backup/app.exclude \
/srv/app/ /backup/app/ | View examples |
| Mirror with delayed deletion | rsync -ain --delete-delay --max-delete=100 /srv/app/ \
/backup/app/ | View examples |
| Retain replaced destination files | rsync -a --backup --backup-dir=../changed /srv/app/ \
/backup/current/ | View examples |
| Push through SSH | rsync -a -e 'ssh -o BatchMode=yes' /srv/app/ \
backup@store.example:/vault/app/ | View examples |
| Protect remote arguments | rsync -a -s ./data/ \
backup@store.example:'/vault/team data/' | View examples |
| Bound idle network time | rsync -a --timeout=120 --partial-dir=.rsync-partial \
/srv/app/ backup@store.example:/vault/app/ | View examples |
| Build a hard-linked snapshot | rsync -a --link-dest=../previous /srv/app/ \
/backup/snapshots/2026-08-12/ | View examples |
| Audit snapshot changes | rsync -ain --link-dest=../previous /srv/app/ \
/backup/snapshots/next/ | View examples |
| Checksum-compare a restore | rsync -nric --delete /backup/restore-test/ \
/srv/restore-reference/ | View examples |
| Preview a restore | rsync -ain /backup/snapshots/2026-08-12/ \
/srv/restore-test/ | View examples |
| Inspect local rsync version | rsync --version | View examples |
| Print transfer statistics | rsync -a --stats /srv/app/ /backup/app/ | View examples |
Identity, Access, and Security · 20 commands
AppArmor Profiles and Troubleshooting Cheat Sheet
| Use | Syntax | Examples |
|---|---|---|
| Check module availability | aa-enabled | View examples |
| Inspect loaded policy | sudo aa-status | View examples |
| Inspect one task label | pid=$(systemctl show reportd.service -p MainPID \
--value); sudo cat "/proc/$pid/attr/current" | View examples |
| Find recent denials | sudo journalctl -k --grep='apparmor="DENIED"' \
--since='15 minutes ago' | View examples |
| Query Audit records | sudo ausearch -m AVC,USER_AVC -ts recent |
grep 'apparmor="DENIED"' | View examples |
| Include base abstraction | #include <abstractions/base> | View examples |
| Include local overrides | #include if exists <local/usr.local.bin.reportd> | View examples |
| Allow recursive reads | /srv/reporting/** r, | View examples |
| Allow directory traversal | /srv/reporting/ r, | View examples |
| Limit writes to owned files | owner /var/lib/reportd/** rwk, | View examples |
| Execute without transition | /usr/bin/logger ix, | View examples |
| Allow TCP networking | network inet stream, | View examples |
| Validate without loading | apparmor_parser -Q /etc/apparmor.d/usr.local.bin.reportd | View examples |
| Expand includes | apparmor_parser -p /etc/apparmor.d/usr.local.bin.reportd | View examples |
| Replace one loaded profile | sudo apparmor_parser -r \
/etc/apparmor.d/usr.local.bin.reportd | View examples |
| Load complain mode temporarily | sudo apparmor_parser -C -r \
/etc/apparmor.d/usr.local.bin.reportd | View examples |
| Persist complain mode | sudo aa-complain /usr/local/bin/reportd | View examples |
| Restore enforce mode | sudo aa-enforce /usr/local/bin/reportd | View examples |
| Review logged behavior | sudo aa-logprof | View examples |
| Disable one profile | sudo aa-disable /usr/local/bin/reportd | View examples |
Identity, Access, and Security · 14 commands
Linux Audit Framework and auditd Cheat Sheet
| Use | Syntax | Examples |
|---|---|---|
| Inspect kernel audit status | sudo auditctl -s -i | View examples |
| Inspect the audit daemon | sudo systemctl status auditd --no-pager | View examples |
| List active kernel rules | sudo auditctl -l | View examples |
| Check whether rules changed | sudo augenrules --check | View examples |
| Build the merged rules file | sudo augenrules | View examples |
| Build and load persistent rules | sudo augenrules --load | View examples |
| Audit writes and metadata changes | -a always,exit -F arch=b64 -F path=/etc/sudoers -F \
perm=wa -k sudoers_change | View examples |
| Audit a directory tree | -a always,exit -F arch=b64 -F dir=/etc/sudoers.d/ -F \
perm=wa -k sudoers_change | View examples |
| Audit failed file access | -a always,exit -F arch=b64 -S openat,truncate -F \
dir=/etc/ -F success=0 -k etc_access_denied | View examples |
| Search by rule key | sudo ausearch --start today --key sudoers_change -i | View examples |
| Search failed events | sudo ausearch --start recent --success no -i | View examples |
| Summarize authentication activity | sudo aureport --auth --summary -i | View examples |
| Request auditd internal state | sudo auditctl --signal state | View examples |
| Lock the audit configuration | -e 2 | View examples |
Identity, Access, and Security · 20 commands
Linux Capabilities and File Attributes Cheat Sheet
| Use | Syntax | Examples |
|---|---|---|
| Read process capability masks | grep -E '^Cap(Inh|Prm|Eff|Bnd|Amb):' /proc/1234/status | View examples |
| Decode a capability mask | capsh --decode=0000000000000400 | View examples |
| Show current capability context | capsh --print | View examples |
| Read file capabilities | getcap -v /usr/local/bin/ping-helper | View examples |
| Scan one filesystem tree | sudo getcap -r /usr/local 2>/dev/null | View examples |
| Grant network bind capability | sudo setcap 'cap_net_bind_service=ep' \
/usr/local/bin/webd | View examples |
| Remove file capabilities | sudo setcap -r /usr/local/bin/webd | View examples |
| Verify expected capability | getcap /usr/local/bin/webd |
grep -F 'cap_net_bind_service=ep' | View examples |
| Show highest supported capability | cat /proc/sys/kernel/cap_last_cap | View examples |
| Check no-new-privileges | grep '^NoNewPrivs:' /proc/1234/status | View examples |
| Inspect unit capability policy | systemctl show webd.service -p CapabilityBoundingSet -p \
AmbientCapabilities -p NoNewPrivileges | View examples |
| Analyze unit exposure | systemd-analyze security webd.service | View examples |
| List file attributes | lsattr -d /etc/important.conf | View examples |
| Set immutable | sudo chattr +i /etc/important.conf | View examples |
| Clear immutable | sudo chattr -i /etc/important.conf | View examples |
| Set append-only | sudo chattr +a /var/log/example.log | View examples |
| List extended attributes | getfattr --dump --absolute-names /usr/local/bin/webd | View examples |
| Read raw capability xattr | getfattr --name=security.capability --hex \
/usr/local/bin/webd | View examples |
| Copy while preserving xattrs | cp --archive --preserve=xattr /usr/local/bin/webd \
/srv/stage/webd | View examples |
| Archive with xattrs | tar --xattrs --acls -cpf webd-backup.tar \
/usr/local/bin/webd | View examples |
Identity, Access, and Security · 20 commands
Linux PAM Authentication Cheat Sheet
| Use | Syntax | Examples |
|---|---|---|
| List PAM service files | find /etc/pam.d -maxdepth 1 -type f -print | sort | View examples |
| Read PAM overview | man 8 pam | View examples |
| Read configuration syntax | man 5 pam.d | View examples |
| Find auth rules | grep -RnsE '^[[:space:]]*auth[[:space:]]' /etc/pam.d | View examples |
| Find account rules | grep -RnsE '^[[:space:]]*account[[:space:]]' /etc/pam.d | View examples |
| Find password rules | grep -RnsE '^[[:space:]]*password[[:space:]]' /etc/pam.d | View examples |
| Find session rules | grep -RnsE '^[[:space:]]*session[[:space:]]' /etc/pam.d | View examples |
| Find included stacks | grep -RnsE \
'^[[:space:]]*(auth|account|password|session)[[:space:]]+(include|substack)' \
/etc/pam.d | View examples |
| List PAM modules | find /usr/lib /lib -type f -name 'pam_*.so' -print \
2>/dev/null |
sort -u | View examples |
| Show lock records | sudo faillock --user alice | View examples |
| Reset one lockout | sudo faillock --user alice --reset | View examples |
| Read lockout policy | grep -Ev '^[[:space:]]*(#|$)' \
/etc/security/faillock.conf | View examples |
| Read access rules | grep -Ev '^[[:space:]]*(#|$)' /etc/security/access.conf | View examples |
| Read resource limits | grep -RhvE '^[[:space:]]*(#|$)' \
/etc/security/limits.conf /etc/security/limits.d | View examples |
| Read password quality policy | grep -RhvE '^[[:space:]]*(#|$)' \
/etc/security/pwquality.conf \
/etc/security/pwquality.conf.d | View examples |
| Test one PAM service | sudo pamtester login alice authenticate | View examples |
| Test account management | sudo pamtester login alice acct_mgmt | View examples |
| Check SSH PAM integration | sshd -T | grep -i '^usepam' | View examples |
| Read authentication logs | journalctl _COMM=sudo --since '-15 minutes' --no-pager | View examples |
| Identify module package | rpm -qf /usr/lib64/security/pam_unix.so | View examples |
Identity, Access, and Security · 18 commands
Linux Permissions Cheat Sheet
| Use | Syntax | Examples |
|---|---|---|
| List permission strings | ls -l | View examples |
| Show a numeric mode | stat -c '%A %a %U %G %n' file | View examples |
| Show current identity | id | View examples |
| Add owner execute | chmod u+x script.sh | View examples |
| Remove group and other write | chmod go-w file | View examples |
| Assign exact symbolic modes | chmod u=rw,g=r,o= file | View examples |
| Set a private file mode | chmod 640 secrets.env | View examples |
| Set a directory mode | chmod 750 scripts | View examples |
| Apply a recursive mode | chmod -R --preserve-root u=rwX,g=rX,o= project | View examples |
| Change a file owner | sudo chown alice file | View examples |
| Change owner and group | sudo chown alice:developers path | View examples |
| Change the owning group | sudo chgrp developers path | View examples |
| Show the current umask | umask | View examples |
| Set a restrictive umask | umask 027 | View examples |
| Inherit a directory group | chmod g+s shared | View examples |
| Protect shared entries | chmod +t shared | View examples |
| Find world-writable files | find . -type f -perm -o=w -print | View examples |
| Find executable files | find . -type f -perm /111 -print | View examples |



