Skip to main content

index

docs/
└── tutorials/
└── shell-bash/
β”œβ”€β”€ index.mdx
β”œβ”€β”€ 01-introduction/
β”‚ β”œβ”€β”€ what-is-a-shell.mdx
β”‚ β”œβ”€β”€ what-is-bash.mdx
β”‚ β”œβ”€β”€ shell-vs-terminal.mdx
β”‚ β”œβ”€β”€ bash-vs-sh.mdx
β”‚ β”œβ”€β”€ command-line-fundamentals.mdx
β”‚ β”œβ”€β”€ command-interpreters.mdx
β”‚ └── common-shells.mdx
β”œβ”€β”€ 02-environment-setup/
β”‚ β”œβ”€β”€ bash-on-linux.mdx
β”‚ β”œβ”€β”€ bash-on-macos.mdx
β”‚ β”œβ”€β”€ bash-on-windows.mdx
β”‚ β”œβ”€β”€ windows-wsl-setup.mdx
β”‚ β”œβ”€β”€ git-bash-setup.mdx
β”‚ β”œβ”€β”€ terminal-emulators.mdx
β”‚ └── verify-bash-installation.mdx
β”œβ”€β”€ 03-first-commands/
β”‚ β”œβ”€β”€ your-first-command.mdx
β”‚ β”œβ”€β”€ pwd-and-current-directory.mdx
β”‚ β”œβ”€β”€ ls-and-directory-listing.mdx
β”‚ β”œβ”€β”€ cd-and-navigation.mdx
β”‚ β”œβ”€β”€ clear-and-reset.mdx
β”‚ β”œβ”€β”€ command-history.mdx
β”‚ └── command-help-and-man-pages.mdx
β”œβ”€β”€ 04-files-and-directories/
β”‚ β”œβ”€β”€ file-paths.mdx
β”‚ β”œβ”€β”€ absolute-vs-relative-paths.mdx
β”‚ β”œβ”€β”€ mkdir-and-directory-creation.mdx
β”‚ β”œβ”€β”€ touch-and-file-creation.mdx
β”‚ β”œβ”€β”€ cp-and-copying-files.mdx
β”‚ β”œβ”€β”€ mv-and-renaming-files.mdx
β”‚ β”œβ”€β”€ rm-and-safe-file-removal.mdx
β”‚ β”œβ”€β”€ find-files-and-directories.mdx
β”‚ β”œβ”€β”€ file-types-and-metadata.mdx
β”‚ └── symbolic-and-hard-links.mdx
β”œβ”€β”€ 05-text-processing/
β”‚ β”œβ”€β”€ cat-and-file-content.mdx
β”‚ β”œβ”€β”€ less-and-paging.mdx
β”‚ β”œβ”€β”€ head-and-tail.mdx
β”‚ β”œβ”€β”€ grep-and-pattern-search.mdx
β”‚ β”œβ”€β”€ sed-and-stream-editing.mdx
β”‚ β”œβ”€β”€ awk-and-text-processing.mdx
β”‚ β”œβ”€β”€ sort-uniq-and-cut.mdx
β”‚ β”œβ”€β”€ wc-and-text-counting.mdx
β”‚ β”œβ”€β”€ tr-and-character-transformations.mdx
β”‚ └── regular-expressions.mdx
β”œβ”€β”€ 06-redirection-and-pipelines/
β”‚ β”œβ”€β”€ stdin-stdout-and-stderr.mdx
β”‚ β”œβ”€β”€ output-redirection.mdx
β”‚ β”œβ”€β”€ append-and-overwrite.mdx
β”‚ β”œβ”€β”€ input-redirection.mdx
β”‚ β”œβ”€β”€ pipes-and-command-chaining.mdx
β”‚ β”œβ”€β”€ tee-and-output-duplication.mdx
β”‚ β”œβ”€β”€ file-descriptors.mdx
β”‚ β”œβ”€β”€ command-substitution.mdx
β”‚ └── process-substitution.mdx
β”œβ”€β”€ 07-shell-expansion-and-quoting/
β”‚ β”œβ”€β”€ quoting-rules.mdx
β”‚ β”œβ”€β”€ variable-expansion.mdx
β”‚ β”œβ”€β”€ command-substitution.mdx
β”‚ β”œβ”€β”€ filename-expansion-globbing.mdx
β”‚ β”œβ”€β”€ brace-expansion.mdx
β”‚ β”œβ”€β”€ tilde-expansion.mdx
β”‚ β”œβ”€β”€ arithmetic-expansion.mdx
β”‚ β”œβ”€β”€ word-splitting.mdx
β”‚ └── shell-expansion-order.mdx
β”œβ”€β”€ 08-permissions-and-ownership/
β”‚ β”œβ”€β”€ file-permissions.mdx
β”‚ β”œβ”€β”€ chmod-and-permission-modes.mdx
β”‚ β”œβ”€β”€ chown-and-chgrp.mdx
β”‚ β”œβ”€β”€ umask-and-default-permissions.mdx
β”‚ β”œβ”€β”€ executable-scripts.mdx
β”‚ β”œβ”€β”€ sudo-and-privileges.mdx
β”‚ └── least-privilege-principle.mdx
β”œβ”€β”€ 09-bash-scripting-basics/
β”‚ β”œβ”€β”€ your-first-bash-script.mdx
β”‚ β”œβ”€β”€ shebang-and-interpreters.mdx
β”‚ β”œβ”€β”€ script-permissions.mdx
β”‚ β”œβ”€β”€ comments-and-documentation.mdx
β”‚ β”œβ”€β”€ variables-and-assignment.mdx
β”‚ β”œβ”€β”€ environment-variables.mdx
β”‚ β”œβ”€β”€ read-and-user-input.mdx
β”‚ β”œβ”€β”€ printf-and-formatted-output.mdx
β”‚ └── script-arguments.mdx
β”œβ”€β”€ 10-variables-and-data/
β”‚ β”œβ”€β”€ local-and-global-variables.mdx
β”‚ β”œβ”€β”€ readonly-and-unset.mdx
β”‚ β”œβ”€β”€ strings-and-manipulation.mdx
β”‚ β”œβ”€β”€ arrays.mdx
β”‚ β”œβ”€β”€ associative-arrays.mdx
β”‚ β”œβ”€β”€ indexed-array-operations.mdx
β”‚ β”œβ”€β”€ parameter-expansion.mdx
β”‚ └── environment-and-export.mdx
β”œβ”€β”€ 11-conditionals-and-logic/
β”‚ β”œβ”€β”€ exit-status-and-return-codes.mdx
β”‚ β”œβ”€β”€ test-and-conditional-expressions.mdx
β”‚ β”œβ”€β”€ if-elif-and-else.mdx
β”‚ β”œβ”€β”€ case-statements.mdx
β”‚ β”œβ”€β”€ logical-and-or-not.mdx
β”‚ β”œβ”€β”€ string-comparisons.mdx
β”‚ β”œβ”€β”€ numeric-comparisons.mdx
β”‚ └── file-test-operators.mdx
β”œβ”€β”€ 12-loops-and-iteration/
β”‚ β”œβ”€β”€ for-loops.mdx
β”‚ β”œβ”€β”€ while-loops.mdx
β”‚ β”œβ”€β”€ until-loops.mdx
β”‚ β”œβ”€β”€ loop-over-files.mdx
β”‚ β”œβ”€β”€ loop-over-arrays.mdx
β”‚ β”œβ”€β”€ break-and-continue.mdx
β”‚ β”œβ”€β”€ nested-loops.mdx
β”‚ └── safe-line-by-line-reading.mdx
β”œβ”€β”€ 13-functions-and-reusability/
β”‚ β”œβ”€β”€ function-fundamentals.mdx
β”‚ β”œβ”€β”€ function-arguments.mdx
β”‚ β”œβ”€β”€ local-variables-and-scope.mdx
β”‚ β”œβ”€β”€ return-status-and-output.mdx
β”‚ β”œβ”€β”€ reusable-shell-libraries.mdx
β”‚ β”œβ”€β”€ recursion-and-limitations.mdx
β”‚ └── modular-script-design.mdx
β”œβ”€β”€ 14-advanced-bash/
β”‚ β”œβ”€β”€ traps-and-signal-handling.mdx
β”‚ β”œβ”€β”€ strict-mode-and-its-tradeoffs.mdx
β”‚ β”œβ”€β”€ process-substitution.mdx
β”‚ β”œβ”€β”€ here-documents-and-here-strings.mdx
β”‚ β”œβ”€β”€ namerefs-and-indirect-expansion.mdx
β”‚ β”œβ”€β”€ mapfile-and-readarray.mdx
β”‚ β”œβ”€β”€ coprocesses.mdx
β”‚ β”œβ”€β”€ advanced-parameter-expansion.mdx
β”‚ └── bash-options-and-shopt.mdx
β”œβ”€β”€ 15-processes-and-jobs/
β”‚ β”œβ”€β”€ process-fundamentals.mdx
β”‚ β”œβ”€β”€ ps-and-process-inspection.mdx
β”‚ β”œβ”€β”€ jobs-bg-and-fg.mdx
β”‚ β”œβ”€β”€ signals-and-kill.mdx
β”‚ β”œβ”€β”€ background-processes.mdx
β”‚ β”œβ”€β”€ wait-and-process-synchronization.mdx
β”‚ β”œβ”€β”€ pipelines-and-subshells.mdx
β”‚ β”œβ”€β”€ process-groups-and-sessions.mdx
β”‚ └── timeouts-and-cleanup.mdx
β”œβ”€β”€ 16-system-administration/
β”‚ β”œβ”€β”€ disk-and-filesystem-usage.mdx
β”‚ β”œβ”€β”€ memory-and-system-information.mdx
β”‚ β”œβ”€β”€ users-groups-and-identity.mdx
β”‚ β”œβ”€β”€ services-and-service-management.mdx
β”‚ β”œβ”€β”€ logs-and-log-analysis.mdx
β”‚ β”œβ”€β”€ networking-commands.mdx
β”‚ β”œβ”€β”€ archives-and-compression.mdx
β”‚ β”œβ”€β”€ package-manager-workflows.mdx
β”‚ └── safe-system-maintenance.mdx
β”œβ”€β”€ 17-automation-and-scheduling/
β”‚ β”œβ”€β”€ automate-repetitive-tasks.mdx
β”‚ β”œβ”€β”€ cron-job-fundamentals.mdx
β”‚ β”œβ”€β”€ cron-environment-and-logging.mdx
β”‚ β”œβ”€β”€ systemd-timers-overview.mdx
β”‚ β”œβ”€β”€ backups-and-rotation.mdx
β”‚ β”œβ”€β”€ cleanup-and-retention-scripts.mdx
β”‚ β”œβ”€β”€ health-check-scripts.mdx
β”‚ └── notifications-and-alerts.mdx
β”œβ”€β”€ 18-debugging-and-quality/
β”‚ β”œβ”€β”€ bash-debugging-options.mdx
β”‚ β”œβ”€β”€ xtrace-and-debug-output.mdx
β”‚ β”œβ”€β”€ syntax-checking.mdx
β”‚ β”œβ”€β”€ shellcheck-static-analysis.mdx
β”‚ β”œβ”€β”€ shfmt-and-formatting.mdx
β”‚ β”œβ”€β”€ bats-automated-testing.mdx
β”‚ β”œβ”€β”€ error-handling-patterns.mdx
β”‚ └── portable-shell-scripts.mdx
β”œβ”€β”€ 19-security-and-best-practices/
β”‚ β”œβ”€β”€ safe-command-construction.mdx
β”‚ β”œβ”€β”€ quoting-and-injection-prevention.mdx
β”‚ β”œβ”€β”€ temporary-files-and-mktemp.mdx
β”‚ β”œβ”€β”€ secrets-and-credential-handling.mdx
β”‚ β”œβ”€β”€ path-and-environment-security.mdx
β”‚ β”œβ”€β”€ safe-deletion-patterns.mdx
β”‚ β”œβ”€β”€ avoid-eval-and-unsafe-input.mdx
β”‚ β”œβ”€β”€ privilege-and-sudo-safety.mdx
β”‚ └── production-script-checklist.mdx
β”œβ”€β”€ 20-developer-workflows/
β”‚ β”œβ”€β”€ git-and-bash.mdx
β”‚ β”œβ”€β”€ development-environment-setup.mdx
β”‚ β”œβ”€β”€ build-and-test-automation.mdx
β”‚ β”œβ”€β”€ ci-cd-shell-scripts.mdx
β”‚ β”œβ”€β”€ docker-and-shell.mdx
β”‚ β”œβ”€β”€ ssh-and-remote-commands.mdx
β”‚ β”œβ”€β”€ command-line-data-workflows.mdx
β”‚ └── environment-bootstrap-scripts.mdx
β”œβ”€β”€ 21-projects/
β”‚ β”œβ”€β”€ interactive-cli-menu.mdx
β”‚ β”œβ”€β”€ batch-file-organizer.mdx
β”‚ β”œβ”€β”€ log-analyzer.mdx
β”‚ β”œβ”€β”€ automated-backup-tool.mdx
β”‚ β”œβ”€β”€ system-health-monitor.mdx
β”‚ β”œβ”€β”€ developer-environment-setup.mdx
β”‚ β”œβ”€β”€ bulk-file-renamer.mdx
β”‚ └── production-automation-toolkit.mdx
β”œβ”€β”€ reference/
β”‚ β”œβ”€β”€ bash-command-cheatsheet.mdx
β”‚ β”œβ”€β”€ shell-expansion-reference.mdx
β”‚ β”œβ”€β”€ bash-operators-reference.mdx
β”‚ β”œβ”€β”€ exit-codes-reference.mdx
β”‚ β”œβ”€β”€ file-permissions-reference.mdx
β”‚ β”œβ”€β”€ environment-variables-reference.mdx
β”‚ β”œβ”€β”€ common-errors-and-solutions.mdx
β”‚ β”œβ”€β”€ bash-vs-posix-reference.mdx
β”‚ β”œβ”€β”€ glossary.mdx
β”‚ └── official-resources.mdx
└── assets/
β”œβ”€β”€ images/
β”œβ”€β”€ diagrams/
└── examples/