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.
Target State
You should treat shell scripts as small programs with inputs, outputs, error paths, side effects and security boundaries, not as loose command sequences. Bash is the primary tool while POSIX sh remains the portability reference. The workshop deliberately separates interactive convenience from stable scripting patterns.
Focus
- Ubuntu VM
- Snapshots
- Pakete
- Testdaten
- Rollback
Core Terms
| Term | Meaning |
|---|---|
Shell |
A program that interprets commands, starts processes, connects streams and can run scripts non-interactively. |
Bash |
GNU Bourne-Again Shell, compatible with many sh concepts and extended with features such as arrays, [[ ... ]], select and process substitution. |
POSIX sh |
A standardized shell language with a narrower feature set; important for portable scripts on Unix-like systems. |
Shebang |
The first script line, for example #!/usr/bin/env bash, that tells the operating system which interpreter to use. |
Exit Code |
Integer command result; 0 means success and other values signal errors or special outcomes. |
Quoting |
Protection against unwanted word splitting, globbing and incorrect interpretation of spaces, metacharacters or empty values. |
Expansion |
Evaluation of parameters, command substitutions, arithmetic expressions, globs and brace expansion before command execution. |
Pipeline |
A chain of processes connected through standard output and standard input; exit status needs deliberate handling with pipefail or PIPESTATUS. |
Redirection |
Routing stdin, stdout, stderr and additional file descriptors into files, pipes or process substitutions. |
Function |
A named shell code block with positional parameters through $@, but without automatic local variables unless local is used. |
Strict Mode |
A combination of set -euo pipefail, deliberate error handling and controlled IFS; useful but not a substitute for design. |
Trap |
Handler for signals and pseudo-signals such as EXIT, ERR, INT or TERM; central for cleanup and interruption logic. |
mktemp |
Tool for safely creating temporary files or directories without colliding names or unsafe path assumptions. |
ShellCheck |
Static analysis for shell scripts that detects common mistakes, quoting issues and unsafe patterns. |
Bats |
TAP-compliant testing framework for Bash and Unix programs; useful for CLI and script behavior. |
Idempotence |
Property where repeated execution reaches the same desired state without unnecessary side effects. |
Command Injection |
Security flaw where untrusted input is interpreted as part of a command. |
PATH Hijacking |
Manipulation of command lookup through unsafe PATH entries or relative program names. |
TOCTOU |
Race condition between checking and using a file or resource. |
Secret Handling |
Handling tokens, passwords and keys without logs, commits, world-readable files or process-list leaks. |
Reference Commands
# Versions and interpreter
bash --version
type -a bash
printf '%s
' "$SHELL"
# Syntax and static checks
bash -n script.sh
shellcheck script.sh
shfmt -d script.sh
# Debugging and execution
bash -x script.sh --dry-run
set -o pipefail
trap 'echo cleanup' EXIT
# Common data processing
find . -type f -name '*.log' -print0 | xargs -0 grep -H 'ERROR'
awk -F, '{ print $1, $3 }' data.csv
sed -n '1,20p' file.txt
# Temporary files and permissions
tmpdir="$(mktemp -d)"
chmod 700 "$tmpdir"
rm -rf -- "$tmpdir"
Working Model
- Define purpose, inputs, outputs and allowed side effects before writing the script.
- Set target shell, shebang, dependencies and portability level.
- Write minimal functions and separate parsing, validation, execution and output.
- Check syntax, ShellCheck findings, tests and dry-run evidence before touching real data.
- Handle error paths explicitly: missing file, empty variable, invalid option, signal, partial pipeline failure.
- Document recovery: revert, backup restore, temporary file cleanup, permission repair, secret rotation.
Typical Decisions
| Decision | Review Question | Risk if Wrong |
|---|---|---|
| Bash or POSIX sh | Does the script need arrays, [[ ... ]] or process substitution? |
it fails or behaves differently on target systems |
| Quoting strategy | Where is word splitting truly intended? | data loss, injection, wrong file names |
| Error handling | Where does set -e help and where do you need explicit checks? |
aborted scripts or hidden partial failures |
| Temporary files | Who can read them and when are they removed? | race conditions, data leaks, stale files |
| Logging | Which output is for humans and which is for machines? | CI breaks or parsers read wrong data |
| Destructive operations | How is scope limited before rm, mv, chmod or chown? |
irreversible changes in the wrong path |
Diagrams and Models
The diagrams are text-based on purpose so they remain reviewable without extra tooling.
User / CI Runner
|
v
+------------------+ argv/env/stdin +------------------+
| bash interpreter | ------------------------> | script functions |
+------------------+ +------------------+
| stdout/stderr |
v v
logs, files, reports commands, files, APIs
Input -> validate -> normalize -> execute -> check exit code -> log -> cleanup
| |
v v
reject unsafe trap on EXIT/ERR
Review Gate
bash -n
ShellCheck
shfmt
smoke tests
dry-run evidence
destructive-operation guard
Operations Notes
- Shell scripts inherit environment,
PATH, working directory, locale and open file descriptors. set -eis not error handling; conditions, subshells and pipelines still need understanding.eval, unquoted variables, unsafe temporary files and globalcdassumptions are common failure sources.- Secrets can leak through logs, process lists, shell history, debug output and temporary files.
- CI runners are non-interactive; scripts must not depend on implicit TTY or home-directory behavior.
Sources and References
Review Checklist for VM Environment
- 01. name the shebang and target shell explicitly: Record the affected file, command, exit code and risk.
- 02. quote variable expansions unless word splitting is deliberate: Record the affected file, command, exit code and risk.
- 03. validate inputs before they influence filenames, options or commands: Record the affected file, command, exit code and risk.
- 04. evaluate and document exit codes explicitly: Record the affected file, command, exit code and risk.
- 05. separate stderr and stdout: Record the affected file, command, exit code and risk.
- 06. create temporary files with
mktemp: Record the affected file, command, exit code and risk. - 07. test cleanup through
trap: Record the affected file, command, exit code and risk. - 08. guard destructive operations with dry-run, scope checks and confirmation: Record the affected file, command, exit code and risk.
- 09. never print or commit secrets: Record the affected file, command, exit code and risk.
- 10. check PATH and external dependencies: Record the affected file, command, exit code and risk.
- 11. handle ShellCheck warnings or suppress them with a reason: Record the affected file, command, exit code and risk.
- 12. document portability assumptions between Bash and POSIX sh: Record the affected file, command, exit code and risk.
- 13. name the shebang and target shell explicitly: Record the affected file, command, exit code and risk.
- 14. quote variable expansions unless word splitting is deliberate: Record the affected file, command, exit code and risk.
- 15. validate inputs before they influence filenames, options or commands: Record the affected file, command, exit code and risk.
- 16. evaluate and document exit codes explicitly: Record the affected file, command, exit code and risk.
- 17. separate stderr and stdout: Record the affected file, command, exit code and risk.
- 18. create temporary files with
mktemp: Record the affected file, command, exit code and risk. - 19. test cleanup through
trap: Record the affected file, command, exit code and risk. - 20. guard destructive operations with dry-run, scope checks and confirmation: Record the affected file, command, exit code and risk.
- 21. never print or commit secrets: Record the affected file, command, exit code and risk.
- 22. check PATH and external dependencies: Record the affected file, command, exit code and risk.
- 23. handle ShellCheck warnings or suppress them with a reason: Record the affected file, command, exit code and risk.
- 24. document portability assumptions between Bash and POSIX sh: Record the affected file, command, exit code and risk.
- 25. name the shebang and target shell explicitly: Record the affected file, command, exit code and risk.
- 26. quote variable expansions unless word splitting is deliberate: Record the affected file, command, exit code and risk.
- 27. validate inputs before they influence filenames, options or commands: Record the affected file, command, exit code and risk.
- 28. evaluate and document exit codes explicitly: Record the affected file, command, exit code and risk.
- 29. separate stderr and stdout: Record the affected file, command, exit code and risk.
- 30. create temporary files with
mktemp: Record the affected file, command, exit code and risk. - 31. test cleanup through
trap: Record the affected file, command, exit code and risk. - 32. guard destructive operations with dry-run, scope checks and confirmation: Record the affected file, command, exit code and risk.
- 33. never print or commit secrets: Record the affected file, command, exit code and risk.
- 34. check PATH and external dependencies: Record the affected file, command, exit code and risk.
- 35. handle ShellCheck warnings or suppress them with a reason: Record the affected file, command, exit code and risk.
- 36. document portability assumptions between Bash and POSIX sh: Record the affected file, command, exit code and risk.
- 37. name the shebang and target shell explicitly: Record the affected file, command, exit code and risk.
- 38. quote variable expansions unless word splitting is deliberate: Record the affected file, command, exit code and risk.
- 39. validate inputs before they influence filenames, options or commands: Record the affected file, command, exit code and risk.
- 40. evaluate and document exit codes explicitly: Record the affected file, command, exit code and risk.
- 41. separate stderr and stdout: Record the affected file, command, exit code and risk.
- 42. create temporary files with
mktemp: Record the affected file, command, exit code and risk. - 43. test cleanup through
trap: Record the affected file, command, exit code and risk. - 44. guard destructive operations with dry-run, scope checks and confirmation: Record the affected file, command, exit code and risk.
- 45. never print or commit secrets: Record the affected file, command, exit code and risk.
- 46. check PATH and external dependencies: Record the affected file, command, exit code and risk.
- 47. handle ShellCheck warnings or suppress them with a reason: Record the affected file, command, exit code and risk.
- 48. document portability assumptions between Bash and POSIX sh: Record the affected file, command, exit code and risk.
- 49. name the shebang and target shell explicitly: Record the affected file, command, exit code and risk.
- 50. quote variable expansions unless word splitting is deliberate: Record the affected file, command, exit code and risk.
- 51. validate inputs before they influence filenames, options or commands: Record the affected file, command, exit code and risk.
- 52. evaluate and document exit codes explicitly: Record the affected file, command, exit code and risk.
Practice Appendix: VM Environment
This appendix is a working backlog for longer trainings, reviews and repetitions. Each task can be checked locally with Bash, test data and a Git repository.
A001. Ubuntu VM
- Task: validate input and connect the observation explicitly to
Ubuntu VM. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A002. Snapshots
- Task: explain exit code and connect the observation explicitly to
Snapshots. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A003. Pakete
- Task: check quoting and connect the observation explicitly to
Pakete. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A004. Testdaten
- Task: test error path and connect the observation explicitly to
Testdaten. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A005. Rollback
- Task: review log output and connect the observation explicitly to
Rollback. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A006. Ubuntu VM
- Task: trace cleanup and connect the observation explicitly to
Ubuntu VM. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A007. Snapshots
- Task: scope portability and connect the observation explicitly to
Snapshots. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A008. Pakete
- Task: mark security risk and connect the observation explicitly to
Pakete. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A009. Testdaten
- Task: document recovery path and connect the observation explicitly to
Testdaten. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A010. Rollback
- Task: write review rule and connect the observation explicitly to
Rollback. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A011. Ubuntu VM
- Task: validate input and connect the observation explicitly to
Ubuntu VM. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A012. Snapshots
- Task: explain exit code and connect the observation explicitly to
Snapshots. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A013. Pakete
- Task: check quoting and connect the observation explicitly to
Pakete. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A014. Testdaten
- Task: test error path and connect the observation explicitly to
Testdaten. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A015. Rollback
- Task: review log output and connect the observation explicitly to
Rollback. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A016. Ubuntu VM
- Task: trace cleanup and connect the observation explicitly to
Ubuntu VM. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A017. Snapshots
- Task: scope portability and connect the observation explicitly to
Snapshots. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A018. Pakete
- Task: mark security risk and connect the observation explicitly to
Pakete. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A019. Testdaten
- Task: document recovery path and connect the observation explicitly to
Testdaten. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A020. Rollback
- Task: write review rule and connect the observation explicitly to
Rollback. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A021. Ubuntu VM
- Task: validate input and connect the observation explicitly to
Ubuntu VM. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A022. Snapshots
- Task: explain exit code and connect the observation explicitly to
Snapshots. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A023. Pakete
- Task: check quoting and connect the observation explicitly to
Pakete. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A024. Testdaten
- Task: test error path and connect the observation explicitly to
Testdaten. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A025. Rollback
- Task: review log output and connect the observation explicitly to
Rollback. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A026. Ubuntu VM
- Task: trace cleanup and connect the observation explicitly to
Ubuntu VM. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A027. Snapshots
- Task: scope portability and connect the observation explicitly to
Snapshots. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A028. Pakete
- Task: mark security risk and connect the observation explicitly to
Pakete. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A029. Testdaten
- Task: document recovery path and connect the observation explicitly to
Testdaten. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A030. Rollback
- Task: write review rule and connect the observation explicitly to
Rollback. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A031. Ubuntu VM
- Task: validate input and connect the observation explicitly to
Ubuntu VM. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A032. Snapshots
- Task: explain exit code and connect the observation explicitly to
Snapshots. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A033. Pakete
- Task: check quoting and connect the observation explicitly to
Pakete. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A034. Testdaten
- Task: test error path and connect the observation explicitly to
Testdaten. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A035. Rollback
- Task: review log output and connect the observation explicitly to
Rollback. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A036. Ubuntu VM
- Task: trace cleanup and connect the observation explicitly to
Ubuntu VM. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A037. Snapshots
- Task: scope portability and connect the observation explicitly to
Snapshots. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A038. Pakete
- Task: mark security risk and connect the observation explicitly to
Pakete. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A039. Testdaten
- Task: document recovery path and connect the observation explicitly to
Testdaten. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A040. Rollback
- Task: write review rule and connect the observation explicitly to
Rollback. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A041. Ubuntu VM
- Task: validate input and connect the observation explicitly to
Ubuntu VM. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A042. Snapshots
- Task: explain exit code and connect the observation explicitly to
Snapshots. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A043. Pakete
- Task: check quoting and connect the observation explicitly to
Pakete. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A044. Testdaten
- Task: test error path and connect the observation explicitly to
Testdaten. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A045. Rollback
- Task: review log output and connect the observation explicitly to
Rollback. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A046. Ubuntu VM
- Task: trace cleanup and connect the observation explicitly to
Ubuntu VM. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A047. Snapshots
- Task: scope portability and connect the observation explicitly to
Snapshots. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A048. Pakete
- Task: mark security risk and connect the observation explicitly to
Pakete. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A049. Testdaten
- Task: document recovery path and connect the observation explicitly to
Testdaten. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A050. Rollback
- Task: write review rule and connect the observation explicitly to
Rollback. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A051. Ubuntu VM
- Task: validate input and connect the observation explicitly to
Ubuntu VM. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A052. Snapshots
- Task: explain exit code and connect the observation explicitly to
Snapshots. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A053. Pakete
- Task: check quoting and connect the observation explicitly to
Pakete. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A054. Testdaten
- Task: test error path and connect the observation explicitly to
Testdaten. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A055. Rollback
- Task: review log output and connect the observation explicitly to
Rollback. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A056. Ubuntu VM
- Task: trace cleanup and connect the observation explicitly to
Ubuntu VM. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A057. Snapshots
- Task: scope portability and connect the observation explicitly to
Snapshots. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A058. Pakete
- Task: mark security risk and connect the observation explicitly to
Pakete. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A059. Testdaten
- Task: document recovery path and connect the observation explicitly to
Testdaten. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A060. Rollback
- Task: write review rule and connect the observation explicitly to
Rollback. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A061. Ubuntu VM
- Task: validate input and connect the observation explicitly to
Ubuntu VM. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A062. Snapshots
- Task: explain exit code and connect the observation explicitly to
Snapshots. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A063. Pakete
- Task: check quoting and connect the observation explicitly to
Pakete. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A064. Testdaten
- Task: test error path and connect the observation explicitly to
Testdaten. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A065. Rollback
- Task: review log output and connect the observation explicitly to
Rollback. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A066. Ubuntu VM
- Task: trace cleanup and connect the observation explicitly to
Ubuntu VM. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A067. Snapshots
- Task: scope portability and connect the observation explicitly to
Snapshots. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A068. Pakete
- Task: mark security risk and connect the observation explicitly to
Pakete. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A069. Testdaten
- Task: document recovery path and connect the observation explicitly to
Testdaten. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A070. Rollback
- Task: write review rule and connect the observation explicitly to
Rollback. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A071. Ubuntu VM
- Task: validate input and connect the observation explicitly to
Ubuntu VM. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A072. Snapshots
- Task: explain exit code and connect the observation explicitly to
Snapshots. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A073. Pakete
- Task: check quoting and connect the observation explicitly to
Pakete. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A074. Testdaten
- Task: test error path and connect the observation explicitly to
Testdaten. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A075. Rollback
- Task: review log output and connect the observation explicitly to
Rollback. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A076. Ubuntu VM
- Task: trace cleanup and connect the observation explicitly to
Ubuntu VM. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A077. Snapshots
- Task: scope portability and connect the observation explicitly to
Snapshots. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A078. Pakete
- Task: mark security risk and connect the observation explicitly to
Pakete. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A079. Testdaten
- Task: document recovery path and connect the observation explicitly to
Testdaten. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A080. Rollback
- Task: write review rule and connect the observation explicitly to
Rollback. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A081. Ubuntu VM
- Task: validate input and connect the observation explicitly to
Ubuntu VM. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A082. Snapshots
- Task: explain exit code and connect the observation explicitly to
Snapshots. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A083. Pakete
- Task: check quoting and connect the observation explicitly to
Pakete. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A084. Testdaten
- Task: test error path and connect the observation explicitly to
Testdaten. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A085. Rollback
- Task: review log output and connect the observation explicitly to
Rollback. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A086. Ubuntu VM
- Task: trace cleanup and connect the observation explicitly to
Ubuntu VM. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A087. Snapshots
- Task: scope portability and connect the observation explicitly to
Snapshots. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A088. Pakete
- Task: mark security risk and connect the observation explicitly to
Pakete. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A089. Testdaten
- Task: document recovery path and connect the observation explicitly to
Testdaten. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A090. Rollback
- Task: write review rule and connect the observation explicitly to
Rollback. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A091. Ubuntu VM
- Task: validate input and connect the observation explicitly to
Ubuntu VM. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.
A092. Snapshots
- Task: explain exit code and connect the observation explicitly to
Snapshots. - Evidence: Record the checked command, expected output, actual output and exit code.
- Operations question: What happens with empty input, missing files, missing tools and repeated execution?
- Security question: Can input become an option, path, glob, subshell, eval expression or secret leak?
- Recovery: Describe revert, cleanup, restore, secret rotation or manual correction.