SH · Safe automation

Shell Scripting Workshop

Bash and POSIX-adjacent foundations, quoting, streams, functions and CLI design, plus error handling, tests, safe input, permissions and destructive operations.

Shell Scripting

My learning progress

With the web app option enabled, your progress is stored on this device.

Learning progress in the web app

Mark chapters as read, view reading progress and check off practice modules after enabling the optional web app. Workshop progress is calculated from chapters across all document pages. Your choices stay on this device; there is no account or server sync. Installation is not required. Withdrawing your choice in Privacy settings deletes the progress.

Workshop progress0%
Practice modules completed0 / 31
Documents read0 / 94
Workshop progress0%
0%
0 / 648 chapters read

Orthevs Academy · Orthevs

Shell Scripting as a learning path

This learning path provides knowledge and practice. Requirements, ownership and evidence must be defined separately for production Orthevs processes.

Technical workshop

One learning framework. Distinct technical subjects.

All workshops follow the same robust topology: central documentation, progressive workshop levels, exercises, assessments, runnable examples and supporting scripts. The Academy preserves this organization instead of dissolving the material into isolated articles or decorative course cards.

Learning material

Documentation in the Orthevs Wiki

The material retains its subject-specific structure. German and English versions are cross-linked, and diagrams are generated directly from the included Mermaid sources.

Workshop overview

1

Technical documentation

13
English · 58.3 KB

Architecture: Shell Scripting

This document belongs to the Shell Scripting workshop and describes architecture as training material, reference documentation and review basis.

Open document ↗
English · 58.6 KB

Best Practices: Shell Scripting

This document belongs to the Shell Scripting workshop and describes best-practices as training material, reference documentation and review basis.

Open document ↗
English · 57.4 KB

Commands: Shell Scripting

This document belongs to the Shell Scripting workshop and describes commands as training material, reference documentation and review basis.

Open document ↗
English · 58.1 KB

Concepts: Shell Scripting

This document belongs to the Shell Scripting workshop and describes concepts as training material, reference documentation and review basis.

Open document ↗
English · 65.8 KB

Curriculum: Shell Scripting

This curriculum structures a shell scripting workshop from fundamentals to advanced operations and security review. It combines language basics, practical scripting, tests, CI/CD and safe operational decisions.

Open document ↗
English · 58.4 KB

Diagrams: Shell Scripting

This document belongs to the Shell Scripting workshop and describes diagrams as training material, reference documentation and review basis.

Open document ↗
English · 58.4 KB

Cloud Environment: Shell Scripting

This document belongs to the Shell Scripting workshop and describes environment-cloud as training material, reference documentation and review basis.

Open document ↗
English · 58.3 KB

Bare Metal Environment: Shell Scripting

This document belongs to the Shell Scripting workshop and describes environment-native-baremetal as training material, reference documentation and review basis.

Open document ↗
English · 58.2 KB

VM Environment: Shell Scripting

This document belongs to the Shell Scripting workshop and describes environment-native-vm as training material, reference documentation and review basis.

Open document ↗
English · 58.4 KB

WSL Environment: Shell Scripting

This document belongs to the Shell Scripting workshop and describes environment-wsl as training material, reference documentation and review basis.

Open document ↗
English · 58.0 KB

Operations: Shell Scripting

This document belongs to the Shell Scripting workshop and describes operations as training material, reference documentation and review basis.

Open document ↗
English · 57.8 KB

Security: Shell Scripting

This document belongs to the Shell Scripting workshop and describes security as training material, reference documentation and review basis.

Open document ↗
English · 58.3 KB

Troubleshooting: Shell Scripting

This document belongs to the Shell Scripting workshop and describes troubleshooting as training material, reference documentation and review basis.

Open document ↗

Workshop levels

4

Exercises

4

Assessments and solutions

9
English · 52.5 KB

Shell Scripting Fundamentals: Assessment (EN)

Scope: Syntax, Ausführung, Quoting, Exit Codes, Dateien und erste sichere Skripte.

Open document ↗
English · 53.7 KB

Shell Scripting Fundamentals: Solution (EN)

Scope: Syntax, Ausführung, Quoting, Exit Codes, Dateien und erste sichere Skripte.

Open document ↗
English · 52.5 KB

Shell Scripting Intermediate: Assessment (EN)

Scope: CLI-Design, Funktionen, getopts, Textverarbeitung, Fehlerbehandlung und Cleanup.

Open document ↗
English · 53.7 KB

Shell Scripting Intermediate: Solution (EN)

Scope: CLI-Design, Funktionen, getopts, Textverarbeitung, Fehlerbehandlung und Cleanup.

Open document ↗
English · 52.5 KB

Shell Scripting Professional: Assessment (EN)

Scope: Skriptarchitektur, Tests, CI/CD, Packaging, Observability und teamfähige Standards.

Open document ↗
English · 53.7 KB

Shell Scripting Professional: Solution (EN)

Scope: Skriptarchitektur, Tests, CI/CD, Packaging, Observability und teamfähige Standards.

Open document ↗
English · 52.5 KB

Shell Scripting Advanced Security: Assessment (EN)

Scope: Threat Modeling, Injection-Schutz, Secrets, Rechte, sichere Löschung und Incident Response.

Open document ↗
English · 53.8 KB

Shell Scripting Advanced Security: Solution (EN)

Scope: Threat Modeling, Injection-Schutz, Secrets, Rechte, sichere Löschung und Incident Response.

Open document ↗
English · 45.8 KB

Official Certificates and Exam Alignment: Shell Scripting (EN)

This document does not invent an official Bash or shell scripting certificate. Shell skills are relevant in many Linux, DevOps, SRE, cloud and security exams, but this workshop treats them as a practical core capability and not as a repl…

Open document ↗
View all content in the wiki

Practice modules

Workshop examples as ZIP files

All 31 practice examples in this workshop are available as individual ZIP files. Choose an example to download its package directly.

00

lab-skeleton

examples/00-lab-skeleton
Files
13
Size
16.1 KB
SHA-256
ab4c81bb6040
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/lab_skeleton.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
01

shebang-exit-codes

examples/01-shebang-exit-codes
Files
13
Size
16.4 KB
SHA-256
077c5c045c20
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/shebang_exit_codes.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
02

variables-quoting

examples/02-variables-quoting
Files
13
Size
16.3 KB
SHA-256
969d8f61a3e9
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/variables_quoting.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
03

redirection-pipelines

examples/03-redirection-pipelines
Files
13
Size
16.4 KB
SHA-256
3cc4f4fec87a
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/redirection_pipelines.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
04

conditionals-loops

examples/04-conditionals-loops
Files
13
Size
16.4 KB
SHA-256
1cd83620c169
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/conditionals_loops.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
05

functions-libraries

examples/05-functions-libraries
Files
13
Size
16.4 KB
SHA-256
aa119cdcf3cd
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/functions_libraries.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
06

getopts-cli

examples/06-getopts-cli
Files
13
Size
16.0 KB
SHA-256
9dd159f37420
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/getopts_cli.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
07

text-processing

examples/07-text-processing
Files
13
Size
16.2 KB
SHA-256
26da66e11f21
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/text_processing.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
08

find-xargs

examples/08-find-xargs
Files
13
Size
16.1 KB
SHA-256
581a1a1358c8
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/find_xargs.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
09

file-permissions-umask

examples/09-file-permissions-umask
Files
13
Size
16.8 KB
SHA-256
c60700082e1d
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/file_permissions_umask.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
10

bash-arrays

examples/10-bash-arrays
Files
13
Size
15.9 KB
SHA-256
8e6456b7dc03
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/bash_arrays.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
11

traps-cleanup

examples/11-traps-cleanup
Files
13
Size
16.0 KB
SHA-256
97bada8c2d6a
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/traps_cleanup.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
12

tempfiles-mktemp

examples/12-tempfiles-mktemp
Files
13
Size
16.2 KB
SHA-256
c0ed6e5fbc2b
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/tempfiles_mktemp.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
13

logging-levels

examples/13-logging-levels
Files
13
Size
16.2 KB
SHA-256
d1970c92d596
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/logging_levels.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
14

config-env-files

examples/14-config-env-files
Files
13
Size
16.2 KB
SHA-256
fda879b75d11
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/config_env_files.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
15

json-cli-jq-fallback

examples/15-json-cli-jq-fallback
Files
13
Size
16.6 KB
SHA-256
bc8689815bd0
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/json_cli_jq_fallback.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
16

parallel-jobs-wait

examples/16-parallel-jobs-wait
Files
13
Size
16.4 KB
SHA-256
06a4e3a3174b
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/parallel_jobs_wait.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
17

cron-systemd-timer-model

examples/17-cron-systemd-timer-model
Files
13
Size
16.9 KB
SHA-256
2da89eb09c37
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/cron_systemd_timer_model.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
18

backup-restore-dry-run

examples/18-backup-restore-dry-run
Files
13
Size
16.6 KB
SHA-256
874c2a74aa1e
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/backup_restore_dry_run.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
19

idempotent-installers

examples/19-idempotent-installers
Files
13
Size
16.5 KB
SHA-256
e484f2dbd93e
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/idempotent_installers.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
20

portability-posix-bash

examples/20-portability-posix-bash
Files
13
Size
16.6 KB
SHA-256
6bf8dfce1de6
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/portability_posix_bash.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
21

shellcheck-quality-gate

examples/21-shellcheck-quality-gate
Files
13
Size
16.6 KB
SHA-256
aa39edba2448
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/shellcheck_quality_gate.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
22

bats-test-model

examples/22-bats-test-model
Files
13
Size
16.2 KB
SHA-256
c502809f11e6
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/bats_test_model.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
23

ci-pipeline-scripts

examples/23-ci-pipeline-scripts
Files
13
Size
16.5 KB
SHA-256
9703165156b4
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/ci_pipeline_scripts.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
24

packaging-release-scripts

examples/24-packaging-release-scripts
Files
13
Size
16.7 KB
SHA-256
516a06d16e8a
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/packaging_release_scripts.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
25

secure-input-validation

examples/25-secure-input-validation
Files
13
Size
16.6 KB
SHA-256
5e81612f276e
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/secure_input_validation.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
26

command-injection-prevention

examples/26-command-injection-prevention
Files
13
Size
17.0 KB
SHA-256
e8d1d1035573
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/command_injection_prevention.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
27

safe-deletion-guardrails

examples/27-safe-deletion-guardrails
Files
13
Size
16.8 KB
SHA-256
056537751fe4
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/safe_deletion_guardrails.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
28

secrets-env-handling

examples/28-secrets-env-handling
Files
13
Size
16.5 KB
SHA-256
a5151862dfb0
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/secrets_env_handling.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
29

sudo-path-hardening

examples/29-sudo-path-hardening
Files
13
Size
16.5 KB
SHA-256
0c5efa55cc0a
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/sudo_path_hardening.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh
30

incident-response-debugging

examples/30-incident-response-debugging
Files
13
Size
16.8 KB
SHA-256
5706b975a806
Files in the ZIP · 13
  • README-EL.md
  • README.md
  • bin/incident_response_debugging.sh
  • config/default.env
  • data/input.txt
  • docs/de/README.md
  • docs/el/README.md
  • docs/en/README.md
  • lib/common.sh
  • run.sh
  • runbook.txt
  • scenario.json
  • tests/smoke.sh

Material structure

The workshop's real directory structure.

Each area can be opened separately. Directories and material files appear in their actual hierarchy with their unchanged paths; the media directory is excluded in full.

Root files

README-EN.md
Documentation39
docs/architecture-shell-scripting-DE.md
docs/architecture-shell-scripting-EN.md
docs/architecture-shell-scripting-EL.md
docs/best-practices-shell-scripting-DE.md
docs/best-practices-shell-scripting-EN.md
docs/best-practices-shell-scripting-EL.md
docs/commands-shell-scripting-DE.md
docs/commands-shell-scripting-EN.md
docs/commands-shell-scripting-EL.md
docs/concepts-shell-scripting-DE.md
docs/concepts-shell-scripting-EN.md
docs/concepts-shell-scripting-EL.md
docs/curriculum-shell-scripting-DE.md
docs/curriculum-shell-scripting-EN.md
docs/curriculum-shell-scripting-EL.md
docs/diagrams-shell-scripting-DE.md
docs/diagrams-shell-scripting-EN.md
docs/diagrams-shell-scripting-EL.md
docs/environment-cloud-shell-scripting-DE.md
docs/environment-cloud-shell-scripting-EN.md
docs/environment-cloud-shell-scripting-EL.md
docs/environment-native-baremetal-shell-scripting-DE.md
docs/environment-native-baremetal-shell-scripting-EN.md
docs/environment-native-baremetal-shell-scripting-EL.md
docs/environment-native-vm-shell-scripting-DE.md
docs/environment-native-vm-shell-scripting-EN.md
docs/environment-native-vm-shell-scripting-EL.md
docs/environment-wsl-shell-scripting-DE.md
docs/environment-wsl-shell-scripting-EN.md
docs/environment-wsl-shell-scripting-EL.md
docs/operations-shell-scripting-DE.md
docs/operations-shell-scripting-EN.md
docs/operations-shell-scripting-EL.md
docs/security-shell-scripting-DE.md
docs/security-shell-scripting-EN.md
docs/security-shell-scripting-EL.md
docs/troubleshooting-shell-scripting-DE.md
docs/troubleshooting-shell-scripting-EN.md
docs/troubleshooting-shell-scripting-EL.md
Workshop levels12
workshops/01-fundamentals-shell-scripting-DE.md
workshops/01-fundamentals-shell-scripting-EN.md
workshops/01-fundamentals-shell-scripting-EL.md
workshops/02-intermediate-shell-scripting-DE.md
workshops/02-intermediate-shell-scripting-EN.md
workshops/02-intermediate-shell-scripting-EL.md
workshops/03-professional-shell-scripting-DE.md
workshops/03-professional-shell-scripting-EN.md
workshops/03-professional-shell-scripting-EL.md
workshops/04-advanced-security-shell-scripting-DE.md
workshops/04-advanced-security-shell-scripting-EN.md
workshops/04-advanced-security-shell-scripting-EL.md
Exercises12
exercises/01-fundamentals-exercises-shell-scripting-DE.md
exercises/01-fundamentals-exercises-shell-scripting-EN.md
exercises/01-fundamentals-exercises-shell-scripting-EL.md
exercises/02-intermediate-exercises-shell-scripting-DE.md
exercises/02-intermediate-exercises-shell-scripting-EN.md
exercises/02-intermediate-exercises-shell-scripting-EL.md
exercises/03-professional-exercises-shell-scripting-DE.md
exercises/03-professional-exercises-shell-scripting-EN.md
exercises/03-professional-exercises-shell-scripting-EL.md
exercises/04-advanced-security-exercises-shell-scripting-DE.md
exercises/04-advanced-security-exercises-shell-scripting-EN.md
exercises/04-advanced-security-exercises-shell-scripting-EL.md
Assessments & solutions27
assessments/01-fundamentals-shell-scripting-assessment-DE.md
assessments/01-fundamentals-shell-scripting-assessment-EN.md
assessments/01-fundamentals-shell-scripting-assessment-EL.md
assessments/01-fundamentals-shell-scripting-solution-DE.md
assessments/01-fundamentals-shell-scripting-solution-EN.md
assessments/01-fundamentals-shell-scripting-solution-EL.md
assessments/02-intermediate-shell-scripting-assessment-DE.md
assessments/02-intermediate-shell-scripting-assessment-EN.md
assessments/02-intermediate-shell-scripting-assessment-EL.md
assessments/02-intermediate-shell-scripting-solution-DE.md
assessments/02-intermediate-shell-scripting-solution-EN.md
assessments/02-intermediate-shell-scripting-solution-EL.md
assessments/03-professional-shell-scripting-assessment-DE.md
assessments/03-professional-shell-scripting-assessment-EN.md
assessments/03-professional-shell-scripting-assessment-EL.md
assessments/03-professional-shell-scripting-solution-DE.md
assessments/03-professional-shell-scripting-solution-EN.md
assessments/03-professional-shell-scripting-solution-EL.md
assessments/04-advanced-security-shell-scripting-assessment-DE.md
assessments/04-advanced-security-shell-scripting-assessment-EN.md
assessments/04-advanced-security-shell-scripting-assessment-EL.md
assessments/04-advanced-security-shell-scripting-solution-DE.md
assessments/04-advanced-security-shell-scripting-solution-EN.md
assessments/04-advanced-security-shell-scripting-solution-EL.md
assessments/05-official-certificates-shell-scripting-DE.md
assessments/05-official-certificates-shell-scripting-EN.md
assessments/05-official-certificates-shell-scripting-EL.md
Practice modules684
examples/00-lab-skeleton
examples/00-lab-skeleton/bin
examples/00-lab-skeleton/config
examples/00-lab-skeleton/data
examples/00-lab-skeleton/docs
examples/00-lab-skeleton/docs/de
examples/00-lab-skeleton/docs/en
examples/00-lab-skeleton/lib
examples/00-lab-skeleton/tests
examples/01-shebang-exit-codes
examples/01-shebang-exit-codes/bin
examples/01-shebang-exit-codes/config
examples/01-shebang-exit-codes/data
examples/01-shebang-exit-codes/docs
examples/01-shebang-exit-codes/docs/de
examples/01-shebang-exit-codes/docs/en
examples/01-shebang-exit-codes/lib
examples/01-shebang-exit-codes/tests
examples/02-variables-quoting
examples/02-variables-quoting/bin
examples/02-variables-quoting/config
examples/02-variables-quoting/data
examples/02-variables-quoting/docs
examples/02-variables-quoting/docs/de
examples/02-variables-quoting/docs/en
examples/02-variables-quoting/lib
examples/02-variables-quoting/tests
examples/03-redirection-pipelines
examples/03-redirection-pipelines/bin
examples/03-redirection-pipelines/config
examples/03-redirection-pipelines/data
examples/03-redirection-pipelines/docs
examples/03-redirection-pipelines/docs/de
examples/03-redirection-pipelines/docs/en
examples/03-redirection-pipelines/lib
examples/03-redirection-pipelines/tests
examples/04-conditionals-loops
examples/04-conditionals-loops/bin
examples/04-conditionals-loops/config
examples/04-conditionals-loops/data
examples/04-conditionals-loops/docs
examples/04-conditionals-loops/docs/de
examples/04-conditionals-loops/docs/en
examples/04-conditionals-loops/lib
examples/04-conditionals-loops/tests
examples/05-functions-libraries
examples/05-functions-libraries/bin
examples/05-functions-libraries/config
examples/05-functions-libraries/data
examples/05-functions-libraries/docs
examples/05-functions-libraries/docs/de
examples/05-functions-libraries/docs/en
examples/05-functions-libraries/lib
examples/05-functions-libraries/tests
examples/06-getopts-cli
examples/06-getopts-cli/bin
examples/06-getopts-cli/config
examples/06-getopts-cli/data
examples/06-getopts-cli/docs
examples/06-getopts-cli/docs/de
examples/06-getopts-cli/docs/en
examples/06-getopts-cli/lib
examples/06-getopts-cli/tests
examples/07-text-processing
examples/07-text-processing/bin
examples/07-text-processing/config
examples/07-text-processing/data
examples/07-text-processing/docs
examples/07-text-processing/docs/de
examples/07-text-processing/docs/en
examples/07-text-processing/lib
examples/07-text-processing/tests
examples/08-find-xargs
examples/08-find-xargs/bin
examples/08-find-xargs/config
examples/08-find-xargs/data
examples/08-find-xargs/docs
examples/08-find-xargs/docs/de
examples/08-find-xargs/docs/en
examples/08-find-xargs/lib
examples/08-find-xargs/tests
examples/09-file-permissions-umask
examples/09-file-permissions-umask/bin
examples/09-file-permissions-umask/config
examples/09-file-permissions-umask/data
examples/09-file-permissions-umask/docs
examples/09-file-permissions-umask/docs/de
examples/09-file-permissions-umask/docs/en
examples/09-file-permissions-umask/lib
examples/09-file-permissions-umask/tests
examples/10-bash-arrays
examples/10-bash-arrays/bin
examples/10-bash-arrays/config
examples/10-bash-arrays/data
examples/10-bash-arrays/docs
examples/10-bash-arrays/docs/de
examples/10-bash-arrays/docs/en
examples/10-bash-arrays/lib
examples/10-bash-arrays/tests
examples/11-traps-cleanup
examples/11-traps-cleanup/bin
examples/11-traps-cleanup/config
examples/11-traps-cleanup/data
examples/11-traps-cleanup/docs
examples/11-traps-cleanup/docs/de
examples/11-traps-cleanup/docs/en
examples/11-traps-cleanup/lib
examples/11-traps-cleanup/tests
examples/12-tempfiles-mktemp
examples/12-tempfiles-mktemp/bin
examples/12-tempfiles-mktemp/config
examples/12-tempfiles-mktemp/data
examples/12-tempfiles-mktemp/docs
examples/12-tempfiles-mktemp/docs/de
examples/12-tempfiles-mktemp/docs/en
examples/12-tempfiles-mktemp/lib
examples/12-tempfiles-mktemp/tests
examples/13-logging-levels
examples/13-logging-levels/bin
examples/13-logging-levels/config
examples/13-logging-levels/data
examples/13-logging-levels/docs
examples/13-logging-levels/docs/de
examples/13-logging-levels/docs/en
examples/13-logging-levels/lib
examples/13-logging-levels/tests
examples/14-config-env-files
examples/14-config-env-files/bin
examples/14-config-env-files/config
examples/14-config-env-files/data
examples/14-config-env-files/docs
examples/14-config-env-files/docs/de
examples/14-config-env-files/docs/en
examples/14-config-env-files/lib
examples/14-config-env-files/tests
examples/15-json-cli-jq-fallback
examples/15-json-cli-jq-fallback/bin
examples/15-json-cli-jq-fallback/config
examples/15-json-cli-jq-fallback/data
examples/15-json-cli-jq-fallback/docs
examples/15-json-cli-jq-fallback/docs/de
examples/15-json-cli-jq-fallback/docs/en
examples/15-json-cli-jq-fallback/lib
examples/15-json-cli-jq-fallback/tests
examples/16-parallel-jobs-wait
examples/16-parallel-jobs-wait/bin
examples/16-parallel-jobs-wait/config
examples/16-parallel-jobs-wait/data
examples/16-parallel-jobs-wait/docs
examples/16-parallel-jobs-wait/docs/de
examples/16-parallel-jobs-wait/docs/en
examples/16-parallel-jobs-wait/lib
examples/16-parallel-jobs-wait/tests
examples/17-cron-systemd-timer-model
examples/17-cron-systemd-timer-model/bin
examples/17-cron-systemd-timer-model/config
examples/17-cron-systemd-timer-model/data
examples/17-cron-systemd-timer-model/docs
examples/17-cron-systemd-timer-model/docs/de
examples/17-cron-systemd-timer-model/docs/en
examples/17-cron-systemd-timer-model/lib
examples/17-cron-systemd-timer-model/tests
examples/18-backup-restore-dry-run
examples/18-backup-restore-dry-run/bin
examples/18-backup-restore-dry-run/config
examples/18-backup-restore-dry-run/data
examples/18-backup-restore-dry-run/docs
examples/18-backup-restore-dry-run/docs/de
examples/18-backup-restore-dry-run/docs/en
examples/18-backup-restore-dry-run/lib
examples/18-backup-restore-dry-run/tests
examples/19-idempotent-installers
examples/19-idempotent-installers/bin
examples/19-idempotent-installers/config
examples/19-idempotent-installers/data
examples/19-idempotent-installers/docs
examples/19-idempotent-installers/docs/de
examples/19-idempotent-installers/docs/en
examples/19-idempotent-installers/lib
examples/19-idempotent-installers/tests
examples/20-portability-posix-bash
examples/20-portability-posix-bash/bin
examples/20-portability-posix-bash/config
examples/20-portability-posix-bash/data
examples/20-portability-posix-bash/docs
examples/20-portability-posix-bash/docs/de
examples/20-portability-posix-bash/docs/en
examples/20-portability-posix-bash/lib
examples/20-portability-posix-bash/tests
examples/21-shellcheck-quality-gate
examples/21-shellcheck-quality-gate/bin
examples/21-shellcheck-quality-gate/config
examples/21-shellcheck-quality-gate/data
examples/21-shellcheck-quality-gate/docs
examples/21-shellcheck-quality-gate/docs/de
examples/21-shellcheck-quality-gate/docs/en
examples/21-shellcheck-quality-gate/lib
examples/21-shellcheck-quality-gate/tests
examples/22-bats-test-model
examples/22-bats-test-model/bin
examples/22-bats-test-model/config
examples/22-bats-test-model/data
examples/22-bats-test-model/docs
examples/22-bats-test-model/docs/de
examples/22-bats-test-model/docs/en
examples/22-bats-test-model/lib
examples/22-bats-test-model/tests
examples/23-ci-pipeline-scripts
examples/23-ci-pipeline-scripts/bin
examples/23-ci-pipeline-scripts/config
examples/23-ci-pipeline-scripts/data
examples/23-ci-pipeline-scripts/docs
examples/23-ci-pipeline-scripts/docs/de
examples/23-ci-pipeline-scripts/docs/en
examples/23-ci-pipeline-scripts/lib
examples/23-ci-pipeline-scripts/tests
examples/24-packaging-release-scripts
examples/24-packaging-release-scripts/bin
examples/24-packaging-release-scripts/config
examples/24-packaging-release-scripts/data
examples/24-packaging-release-scripts/docs
examples/24-packaging-release-scripts/docs/de
examples/24-packaging-release-scripts/docs/en
examples/24-packaging-release-scripts/lib
examples/24-packaging-release-scripts/tests
examples/25-secure-input-validation
examples/25-secure-input-validation/bin
examples/25-secure-input-validation/config
examples/25-secure-input-validation/data
examples/25-secure-input-validation/docs
examples/25-secure-input-validation/docs/de
examples/25-secure-input-validation/docs/en
examples/25-secure-input-validation/lib
examples/25-secure-input-validation/tests
examples/26-command-injection-prevention
examples/26-command-injection-prevention/bin
examples/26-command-injection-prevention/config
examples/26-command-injection-prevention/data
examples/26-command-injection-prevention/docs
examples/26-command-injection-prevention/docs/de
examples/26-command-injection-prevention/docs/en
examples/26-command-injection-prevention/lib
examples/26-command-injection-prevention/tests
examples/27-safe-deletion-guardrails
examples/27-safe-deletion-guardrails/bin
examples/27-safe-deletion-guardrails/config
examples/27-safe-deletion-guardrails/data
examples/27-safe-deletion-guardrails/docs
examples/27-safe-deletion-guardrails/docs/de
examples/27-safe-deletion-guardrails/docs/en
examples/27-safe-deletion-guardrails/lib
examples/27-safe-deletion-guardrails/tests
examples/28-secrets-env-handling
examples/28-secrets-env-handling/bin
examples/28-secrets-env-handling/config
examples/28-secrets-env-handling/data
examples/28-secrets-env-handling/docs
examples/28-secrets-env-handling/docs/de
examples/28-secrets-env-handling/docs/en
examples/28-secrets-env-handling/lib
examples/28-secrets-env-handling/tests
examples/29-sudo-path-hardening
examples/29-sudo-path-hardening/bin
examples/29-sudo-path-hardening/config
examples/29-sudo-path-hardening/data
examples/29-sudo-path-hardening/docs
examples/29-sudo-path-hardening/docs/de
examples/29-sudo-path-hardening/docs/en
examples/29-sudo-path-hardening/lib
examples/29-sudo-path-hardening/tests
examples/30-incident-response-debugging
examples/30-incident-response-debugging/bin
examples/30-incident-response-debugging/config
examples/30-incident-response-debugging/data
examples/30-incident-response-debugging/docs
examples/30-incident-response-debugging/docs/de
examples/30-incident-response-debugging/docs/en
examples/30-incident-response-debugging/lib
examples/30-incident-response-debugging/tests
examples/.gitignore
examples/00-lab-skeleton/README.md
examples/00-lab-skeleton/README-EL.md
examples/00-lab-skeleton/bin/lab_skeleton.sh
examples/00-lab-skeleton/config/default.env
examples/00-lab-skeleton/data/input.txt
examples/00-lab-skeleton/docs/de/README.md
examples/00-lab-skeleton/docs/en/README.md
examples/00-lab-skeleton/docs/el/README.md
examples/00-lab-skeleton/lib/common.sh
examples/00-lab-skeleton/run.sh
examples/00-lab-skeleton/runbook.txt
examples/00-lab-skeleton/scenario.json
examples/00-lab-skeleton/tests/smoke.sh
examples/01-shebang-exit-codes/README.md
examples/01-shebang-exit-codes/README-EL.md
examples/01-shebang-exit-codes/bin/shebang_exit_codes.sh
examples/01-shebang-exit-codes/config/default.env
examples/01-shebang-exit-codes/data/input.txt
examples/01-shebang-exit-codes/docs/de/README.md
examples/01-shebang-exit-codes/docs/en/README.md
examples/01-shebang-exit-codes/docs/el/README.md
examples/01-shebang-exit-codes/lib/common.sh
examples/01-shebang-exit-codes/run.sh
examples/01-shebang-exit-codes/runbook.txt
examples/01-shebang-exit-codes/scenario.json
examples/01-shebang-exit-codes/tests/smoke.sh
examples/02-variables-quoting/README.md
examples/02-variables-quoting/README-EL.md
examples/02-variables-quoting/bin/variables_quoting.sh
examples/02-variables-quoting/config/default.env
examples/02-variables-quoting/data/input.txt
examples/02-variables-quoting/docs/de/README.md
examples/02-variables-quoting/docs/en/README.md
examples/02-variables-quoting/docs/el/README.md
examples/02-variables-quoting/lib/common.sh
examples/02-variables-quoting/run.sh
examples/02-variables-quoting/runbook.txt
examples/02-variables-quoting/scenario.json
examples/02-variables-quoting/tests/smoke.sh
examples/03-redirection-pipelines/README.md
examples/03-redirection-pipelines/README-EL.md
examples/03-redirection-pipelines/bin/redirection_pipelines.sh
examples/03-redirection-pipelines/config/default.env
examples/03-redirection-pipelines/data/input.txt
examples/03-redirection-pipelines/docs/de/README.md
examples/03-redirection-pipelines/docs/en/README.md
examples/03-redirection-pipelines/docs/el/README.md
examples/03-redirection-pipelines/lib/common.sh
examples/03-redirection-pipelines/run.sh
examples/03-redirection-pipelines/runbook.txt
examples/03-redirection-pipelines/scenario.json
examples/03-redirection-pipelines/tests/smoke.sh
examples/04-conditionals-loops/README.md
examples/04-conditionals-loops/README-EL.md
examples/04-conditionals-loops/bin/conditionals_loops.sh
examples/04-conditionals-loops/config/default.env
examples/04-conditionals-loops/data/input.txt
examples/04-conditionals-loops/docs/de/README.md
examples/04-conditionals-loops/docs/en/README.md
examples/04-conditionals-loops/docs/el/README.md
examples/04-conditionals-loops/lib/common.sh
examples/04-conditionals-loops/run.sh
examples/04-conditionals-loops/runbook.txt
examples/04-conditionals-loops/scenario.json
examples/04-conditionals-loops/tests/smoke.sh
examples/05-functions-libraries/README.md
examples/05-functions-libraries/README-EL.md
examples/05-functions-libraries/bin/functions_libraries.sh
examples/05-functions-libraries/config/default.env
examples/05-functions-libraries/data/input.txt
examples/05-functions-libraries/docs/de/README.md
examples/05-functions-libraries/docs/en/README.md
examples/05-functions-libraries/docs/el/README.md
examples/05-functions-libraries/lib/common.sh
examples/05-functions-libraries/run.sh
examples/05-functions-libraries/runbook.txt
examples/05-functions-libraries/scenario.json
examples/05-functions-libraries/tests/smoke.sh
examples/06-getopts-cli/README.md
examples/06-getopts-cli/README-EL.md
examples/06-getopts-cli/bin/getopts_cli.sh
examples/06-getopts-cli/config/default.env
examples/06-getopts-cli/data/input.txt
examples/06-getopts-cli/docs/de/README.md
examples/06-getopts-cli/docs/en/README.md
examples/06-getopts-cli/docs/el/README.md
examples/06-getopts-cli/lib/common.sh
examples/06-getopts-cli/run.sh
examples/06-getopts-cli/runbook.txt
examples/06-getopts-cli/scenario.json
examples/06-getopts-cli/tests/smoke.sh
examples/07-text-processing/README.md
examples/07-text-processing/README-EL.md
examples/07-text-processing/bin/text_processing.sh
examples/07-text-processing/config/default.env
examples/07-text-processing/data/input.txt
examples/07-text-processing/docs/de/README.md
examples/07-text-processing/docs/en/README.md
examples/07-text-processing/docs/el/README.md
examples/07-text-processing/lib/common.sh
examples/07-text-processing/run.sh
examples/07-text-processing/runbook.txt
examples/07-text-processing/scenario.json
examples/07-text-processing/tests/smoke.sh
examples/08-find-xargs/README.md
examples/08-find-xargs/README-EL.md
examples/08-find-xargs/bin/find_xargs.sh
examples/08-find-xargs/config/default.env
examples/08-find-xargs/data/input.txt
examples/08-find-xargs/docs/de/README.md
examples/08-find-xargs/docs/en/README.md
examples/08-find-xargs/docs/el/README.md
examples/08-find-xargs/lib/common.sh
examples/08-find-xargs/run.sh
examples/08-find-xargs/runbook.txt
examples/08-find-xargs/scenario.json
examples/08-find-xargs/tests/smoke.sh
examples/09-file-permissions-umask/README.md
examples/09-file-permissions-umask/README-EL.md
examples/09-file-permissions-umask/bin/file_permissions_umask.sh
examples/09-file-permissions-umask/config/default.env
examples/09-file-permissions-umask/data/input.txt
examples/09-file-permissions-umask/docs/de/README.md
examples/09-file-permissions-umask/docs/en/README.md
examples/09-file-permissions-umask/docs/el/README.md
examples/09-file-permissions-umask/lib/common.sh
examples/09-file-permissions-umask/run.sh
examples/09-file-permissions-umask/runbook.txt
examples/09-file-permissions-umask/scenario.json
examples/09-file-permissions-umask/tests/smoke.sh
examples/10-bash-arrays/README.md
examples/10-bash-arrays/README-EL.md
examples/10-bash-arrays/bin/bash_arrays.sh
examples/10-bash-arrays/config/default.env
examples/10-bash-arrays/data/input.txt
examples/10-bash-arrays/docs/de/README.md
examples/10-bash-arrays/docs/en/README.md
examples/10-bash-arrays/docs/el/README.md
examples/10-bash-arrays/lib/common.sh
examples/10-bash-arrays/run.sh
examples/10-bash-arrays/runbook.txt
examples/10-bash-arrays/scenario.json
examples/10-bash-arrays/tests/smoke.sh
examples/11-traps-cleanup/README.md
examples/11-traps-cleanup/README-EL.md
examples/11-traps-cleanup/bin/traps_cleanup.sh
examples/11-traps-cleanup/config/default.env
examples/11-traps-cleanup/data/input.txt
examples/11-traps-cleanup/docs/de/README.md
examples/11-traps-cleanup/docs/en/README.md
examples/11-traps-cleanup/docs/el/README.md
examples/11-traps-cleanup/lib/common.sh
examples/11-traps-cleanup/run.sh
examples/11-traps-cleanup/runbook.txt
examples/11-traps-cleanup/scenario.json
examples/11-traps-cleanup/tests/smoke.sh
examples/12-tempfiles-mktemp/README.md
examples/12-tempfiles-mktemp/README-EL.md
examples/12-tempfiles-mktemp/bin/tempfiles_mktemp.sh
examples/12-tempfiles-mktemp/config/default.env
examples/12-tempfiles-mktemp/data/input.txt
examples/12-tempfiles-mktemp/docs/de/README.md
examples/12-tempfiles-mktemp/docs/en/README.md
examples/12-tempfiles-mktemp/docs/el/README.md
examples/12-tempfiles-mktemp/lib/common.sh
examples/12-tempfiles-mktemp/run.sh
examples/12-tempfiles-mktemp/runbook.txt
examples/12-tempfiles-mktemp/scenario.json
examples/12-tempfiles-mktemp/tests/smoke.sh
examples/13-logging-levels/README.md
examples/13-logging-levels/README-EL.md
examples/13-logging-levels/bin/logging_levels.sh
examples/13-logging-levels/config/default.env
examples/13-logging-levels/data/input.txt
examples/13-logging-levels/docs/de/README.md
examples/13-logging-levels/docs/en/README.md
examples/13-logging-levels/docs/el/README.md
examples/13-logging-levels/lib/common.sh
examples/13-logging-levels/run.sh
examples/13-logging-levels/runbook.txt
examples/13-logging-levels/scenario.json
examples/13-logging-levels/tests/smoke.sh
examples/14-config-env-files/README.md
examples/14-config-env-files/README-EL.md
examples/14-config-env-files/bin/config_env_files.sh
examples/14-config-env-files/config/default.env
examples/14-config-env-files/data/input.txt
examples/14-config-env-files/docs/de/README.md
examples/14-config-env-files/docs/en/README.md
examples/14-config-env-files/docs/el/README.md
examples/14-config-env-files/lib/common.sh
examples/14-config-env-files/run.sh
examples/14-config-env-files/runbook.txt
examples/14-config-env-files/scenario.json
examples/14-config-env-files/tests/smoke.sh
examples/15-json-cli-jq-fallback/README.md
examples/15-json-cli-jq-fallback/README-EL.md
examples/15-json-cli-jq-fallback/bin/json_cli_jq_fallback.sh
examples/15-json-cli-jq-fallback/config/default.env
examples/15-json-cli-jq-fallback/data/input.txt
examples/15-json-cli-jq-fallback/docs/de/README.md
examples/15-json-cli-jq-fallback/docs/en/README.md
examples/15-json-cli-jq-fallback/docs/el/README.md
examples/15-json-cli-jq-fallback/lib/common.sh
examples/15-json-cli-jq-fallback/run.sh
examples/15-json-cli-jq-fallback/runbook.txt
examples/15-json-cli-jq-fallback/scenario.json
examples/15-json-cli-jq-fallback/tests/smoke.sh
examples/16-parallel-jobs-wait/README.md
examples/16-parallel-jobs-wait/README-EL.md
examples/16-parallel-jobs-wait/bin/parallel_jobs_wait.sh
examples/16-parallel-jobs-wait/config/default.env
examples/16-parallel-jobs-wait/data/input.txt
examples/16-parallel-jobs-wait/docs/de/README.md
examples/16-parallel-jobs-wait/docs/en/README.md
examples/16-parallel-jobs-wait/docs/el/README.md
examples/16-parallel-jobs-wait/lib/common.sh
examples/16-parallel-jobs-wait/run.sh
examples/16-parallel-jobs-wait/runbook.txt
examples/16-parallel-jobs-wait/scenario.json
examples/16-parallel-jobs-wait/tests/smoke.sh
examples/17-cron-systemd-timer-model/README.md
examples/17-cron-systemd-timer-model/README-EL.md
examples/17-cron-systemd-timer-model/bin/cron_systemd_timer_model.sh
examples/17-cron-systemd-timer-model/config/default.env
examples/17-cron-systemd-timer-model/data/input.txt
examples/17-cron-systemd-timer-model/docs/de/README.md
examples/17-cron-systemd-timer-model/docs/en/README.md
examples/17-cron-systemd-timer-model/docs/el/README.md
examples/17-cron-systemd-timer-model/lib/common.sh
examples/17-cron-systemd-timer-model/run.sh
examples/17-cron-systemd-timer-model/runbook.txt
examples/17-cron-systemd-timer-model/scenario.json
examples/17-cron-systemd-timer-model/tests/smoke.sh
examples/18-backup-restore-dry-run/README.md
examples/18-backup-restore-dry-run/README-EL.md
examples/18-backup-restore-dry-run/bin/backup_restore_dry_run.sh
examples/18-backup-restore-dry-run/config/default.env
examples/18-backup-restore-dry-run/data/input.txt
examples/18-backup-restore-dry-run/docs/de/README.md
examples/18-backup-restore-dry-run/docs/en/README.md
examples/18-backup-restore-dry-run/docs/el/README.md
examples/18-backup-restore-dry-run/lib/common.sh
examples/18-backup-restore-dry-run/run.sh
examples/18-backup-restore-dry-run/runbook.txt
examples/18-backup-restore-dry-run/scenario.json
examples/18-backup-restore-dry-run/tests/smoke.sh
examples/19-idempotent-installers/README.md
examples/19-idempotent-installers/README-EL.md
examples/19-idempotent-installers/bin/idempotent_installers.sh
examples/19-idempotent-installers/config/default.env
examples/19-idempotent-installers/data/input.txt
examples/19-idempotent-installers/docs/de/README.md
examples/19-idempotent-installers/docs/en/README.md
examples/19-idempotent-installers/docs/el/README.md
examples/19-idempotent-installers/lib/common.sh
examples/19-idempotent-installers/run.sh
examples/19-idempotent-installers/runbook.txt
examples/19-idempotent-installers/scenario.json
examples/19-idempotent-installers/tests/smoke.sh
examples/20-portability-posix-bash/README.md
examples/20-portability-posix-bash/README-EL.md
examples/20-portability-posix-bash/bin/portability_posix_bash.sh
examples/20-portability-posix-bash/config/default.env
examples/20-portability-posix-bash/data/input.txt
examples/20-portability-posix-bash/docs/de/README.md
examples/20-portability-posix-bash/docs/en/README.md
examples/20-portability-posix-bash/docs/el/README.md
examples/20-portability-posix-bash/lib/common.sh
examples/20-portability-posix-bash/run.sh
examples/20-portability-posix-bash/runbook.txt
examples/20-portability-posix-bash/scenario.json
examples/20-portability-posix-bash/tests/smoke.sh
examples/21-shellcheck-quality-gate/README.md
examples/21-shellcheck-quality-gate/README-EL.md
examples/21-shellcheck-quality-gate/bin/shellcheck_quality_gate.sh
examples/21-shellcheck-quality-gate/config/default.env
examples/21-shellcheck-quality-gate/data/input.txt
examples/21-shellcheck-quality-gate/docs/de/README.md
examples/21-shellcheck-quality-gate/docs/en/README.md
examples/21-shellcheck-quality-gate/docs/el/README.md
examples/21-shellcheck-quality-gate/lib/common.sh
examples/21-shellcheck-quality-gate/run.sh
examples/21-shellcheck-quality-gate/runbook.txt
examples/21-shellcheck-quality-gate/scenario.json
examples/21-shellcheck-quality-gate/tests/smoke.sh
examples/22-bats-test-model/README.md
examples/22-bats-test-model/README-EL.md
examples/22-bats-test-model/bin/bats_test_model.sh
examples/22-bats-test-model/config/default.env
examples/22-bats-test-model/data/input.txt
examples/22-bats-test-model/docs/de/README.md
examples/22-bats-test-model/docs/en/README.md
examples/22-bats-test-model/docs/el/README.md
examples/22-bats-test-model/lib/common.sh
examples/22-bats-test-model/run.sh
examples/22-bats-test-model/runbook.txt
examples/22-bats-test-model/scenario.json
examples/22-bats-test-model/tests/smoke.sh
examples/23-ci-pipeline-scripts/README.md
examples/23-ci-pipeline-scripts/README-EL.md
examples/23-ci-pipeline-scripts/bin/ci_pipeline_scripts.sh
examples/23-ci-pipeline-scripts/config/default.env
examples/23-ci-pipeline-scripts/data/input.txt
examples/23-ci-pipeline-scripts/docs/de/README.md
examples/23-ci-pipeline-scripts/docs/en/README.md
examples/23-ci-pipeline-scripts/docs/el/README.md
examples/23-ci-pipeline-scripts/lib/common.sh
examples/23-ci-pipeline-scripts/run.sh
examples/23-ci-pipeline-scripts/runbook.txt
examples/23-ci-pipeline-scripts/scenario.json
examples/23-ci-pipeline-scripts/tests/smoke.sh
examples/24-packaging-release-scripts/README.md
examples/24-packaging-release-scripts/README-EL.md
examples/24-packaging-release-scripts/bin/packaging_release_scripts.sh
examples/24-packaging-release-scripts/config/default.env
examples/24-packaging-release-scripts/data/input.txt
examples/24-packaging-release-scripts/docs/de/README.md
examples/24-packaging-release-scripts/docs/en/README.md
examples/24-packaging-release-scripts/docs/el/README.md
examples/24-packaging-release-scripts/lib/common.sh
examples/24-packaging-release-scripts/run.sh
examples/24-packaging-release-scripts/runbook.txt
examples/24-packaging-release-scripts/scenario.json
examples/24-packaging-release-scripts/tests/smoke.sh
examples/25-secure-input-validation/README.md
examples/25-secure-input-validation/README-EL.md
examples/25-secure-input-validation/bin/secure_input_validation.sh
examples/25-secure-input-validation/config/default.env
examples/25-secure-input-validation/data/input.txt
examples/25-secure-input-validation/docs/de/README.md
examples/25-secure-input-validation/docs/en/README.md
examples/25-secure-input-validation/docs/el/README.md
examples/25-secure-input-validation/lib/common.sh
examples/25-secure-input-validation/run.sh
examples/25-secure-input-validation/runbook.txt
examples/25-secure-input-validation/scenario.json
examples/25-secure-input-validation/tests/smoke.sh
examples/26-command-injection-prevention/README.md
examples/26-command-injection-prevention/README-EL.md
examples/26-command-injection-prevention/bin/command_injection_prevention.sh
examples/26-command-injection-prevention/config/default.env
examples/26-command-injection-prevention/data/input.txt
examples/26-command-injection-prevention/docs/de/README.md
examples/26-command-injection-prevention/docs/en/README.md
examples/26-command-injection-prevention/docs/el/README.md
examples/26-command-injection-prevention/lib/common.sh
examples/26-command-injection-prevention/run.sh
examples/26-command-injection-prevention/runbook.txt
examples/26-command-injection-prevention/scenario.json
examples/26-command-injection-prevention/tests/smoke.sh
examples/27-safe-deletion-guardrails/README.md
examples/27-safe-deletion-guardrails/README-EL.md
examples/27-safe-deletion-guardrails/bin/safe_deletion_guardrails.sh
examples/27-safe-deletion-guardrails/config/default.env
examples/27-safe-deletion-guardrails/data/input.txt
examples/27-safe-deletion-guardrails/docs/de/README.md
examples/27-safe-deletion-guardrails/docs/en/README.md
examples/27-safe-deletion-guardrails/docs/el/README.md
examples/27-safe-deletion-guardrails/lib/common.sh
examples/27-safe-deletion-guardrails/run.sh
examples/27-safe-deletion-guardrails/runbook.txt
examples/27-safe-deletion-guardrails/scenario.json
examples/27-safe-deletion-guardrails/tests/smoke.sh
examples/28-secrets-env-handling/README.md
examples/28-secrets-env-handling/README-EL.md
examples/28-secrets-env-handling/bin/secrets_env_handling.sh
examples/28-secrets-env-handling/config/default.env
examples/28-secrets-env-handling/data/input.txt
examples/28-secrets-env-handling/docs/de/README.md
examples/28-secrets-env-handling/docs/en/README.md
examples/28-secrets-env-handling/docs/el/README.md
examples/28-secrets-env-handling/lib/common.sh
examples/28-secrets-env-handling/run.sh
examples/28-secrets-env-handling/runbook.txt
examples/28-secrets-env-handling/scenario.json
examples/28-secrets-env-handling/tests/smoke.sh
examples/29-sudo-path-hardening/README.md
examples/29-sudo-path-hardening/README-EL.md
examples/29-sudo-path-hardening/bin/sudo_path_hardening.sh
examples/29-sudo-path-hardening/config/default.env
examples/29-sudo-path-hardening/data/input.txt
examples/29-sudo-path-hardening/docs/de/README.md
examples/29-sudo-path-hardening/docs/en/README.md
examples/29-sudo-path-hardening/docs/el/README.md
examples/29-sudo-path-hardening/lib/common.sh
examples/29-sudo-path-hardening/run.sh
examples/29-sudo-path-hardening/runbook.txt
examples/29-sudo-path-hardening/scenario.json
examples/29-sudo-path-hardening/tests/smoke.sh
examples/30-incident-response-debugging/README.md
examples/30-incident-response-debugging/README-EL.md
examples/30-incident-response-debugging/bin/incident_response_debugging.sh
examples/30-incident-response-debugging/config/default.env
examples/30-incident-response-debugging/data/input.txt
examples/30-incident-response-debugging/docs/de/README.md
examples/30-incident-response-debugging/docs/en/README.md
examples/30-incident-response-debugging/docs/el/README.md
examples/30-incident-response-debugging/lib/common.sh
examples/30-incident-response-debugging/run.sh
examples/30-incident-response-debugging/runbook.txt
examples/30-incident-response-debugging/scenario.json
examples/30-incident-response-debugging/tests/smoke.sh
examples/README.md
Setup & helper scripts1
scripts/provision_shell_scripting.sh

SH · Orthevs Academy

Frame the workshop application together.

For internal training, learning paths or technical deep dives, scope, sequence and audience can be aligned with the intended context.

Orthevs – Engineering the foundation for what comes next.

Orthevs as an app

Install Orthevs

The Orthevs web app can be installed on supported mobile devices and desktop browsers.

iPhone and iPad

Open Orthevs in Safari. Tap Share, then Add to Home Screen. Enable Open as Web App if offered, then tap Add.

Android

For the web app, open the browser menu and choose Install app or Add to Home screen. Confirm the installation.

Desktop browser

Open the browser menu or the install icon in the address bar, then choose Install app or Add to Dock.

Web app installation depends on your browser. If no install prompt appears, follow the browser steps shown above.