opscape

How the examples are run

No output on this site is typed by hand. Each rebuild runs every example in a sandbox and the pages show what came back.

This build

1894examples on the site
1851run in the sandbox on 2026-10-31
0unexpected exit statuses (the build stops otherwise)
121/121explainer test lines pass

The run took 212 seconds. Examples that could not run in the sandbox (43 of them) say so on their page and show no output:

CommandExampleWhy it was not run
ddWrite an image to a USB stickwrites to a real block device and needs root; the sandbox has neither
ddBack up the first sector of a diskreads a real disk device as root
dfThe full mount list on a real machineon a container this lists the build host's mounts; run it on your own machine
hostnameSet the host name permanently with systemdneeds systemd and root, which the sandbox does not have
ipAdd an address, bring a link up, add a default routeneeds root and a real network interface; the sandbox has neither
journalctlShow the logs of one serviceneeds a systemd journal; not available in the build sandbox
journalctlFollow a service's log liveneeds a systemd journal; not available in the build sandbox
journalctlShow the last lines without a pagerneeds a systemd journal; not available in the build sandbox
journalctlShow messages from the current or previous bootneeds a systemd journal; not available in the build sandbox
journalctlShow only errors and worseneeds a systemd journal; not available in the build sandbox
journalctlShow a time windowneeds a systemd journal; not available in the build sandbox
journalctlShow kernel messagesneeds a systemd journal; not available in the build sandbox
journalctlSearch message textneeds a systemd journal; not available in the build sandbox
journalctlGet structured output for toolsneeds a systemd journal; not available in the build sandbox
journalctlPrint only the message textneeds a systemd journal; not available in the build sandbox
journalctlSee how much disk the journal usesneeds a systemd journal; not available in the build sandbox
journalctlShrink the journalneeds a systemd journal and root; not available in the build sandbox
journalctlRead your own user services' logsneeds a systemd journal; not available in the build sandbox
lessOpen a file at the first matchneeds an interactive terminal; without one less copies the file and ignores the starting position
lessLong lines and line numbers for log readingneeds an interactive terminal; without one less ignores display options like -N and -S
lsblkList disks and partitionslists the host machine's real disks; run it on your own system
lsblkFilesystems, labels and UUIDslists the host machine's real disks; run it on your own system
lsblkChoose the columnslists the host machine's real disks; run it on your own system
lsblkMachine-readable output for scriptslists the host machine's real disks; run it on your own system
mountMount a disk partitionneeds root and a real disk; the sandbox has neither
mountMount read-only and without executablesneeds root and a real disk
mountMount a disk image or ISO fileneeds root and loop devices, which the sandbox does not provide
mountA filesystem in memoryneeds root (CAP_SYS_ADMIN), which the sandbox does not grant
mountMake a directory appear in a second placeneeds root (CAP_SYS_ADMIN)
systemctlCheck whether a service is runningneeds a running systemd; not available in the build sandbox
systemctlStart, stop or restart a serviceneeds a running systemd and root; not available in the build sandbox
systemctlReload configuration without a restartneeds a running systemd and root; not available in the build sandbox
systemctlStart a service now and at every bootneeds a running systemd and root; not available in the build sandbox
systemctlStop a service and keep it from starting at bootneeds a running systemd and root; not available in the build sandbox
systemctlTest a service's state in a scriptneeds a running systemd; not available in the build sandbox
systemctlList units that have failedneeds a running systemd; not available in the build sandbox
systemctlList running servicesneeds a running systemd; not available in the build sandbox
systemctlRead a unit's definitionneeds a running systemd; not available in the build sandbox
systemctlOverride settings without touching the package fileneeds a running systemd, root and an interactive editor; not available in the build sandbox
systemctlManage your own services without rootneeds a running systemd user manager; not available in the build sandbox
tailKeep following across log rotationrename events inside the build sandbox's container filesystem are not delivered reliably, so the output would be misleading
teeWrite a root-owned filethe sandbox has no sudo
watchRerun a command every two secondsneeds an interactive terminal for its full-screen display, and runs until Ctrl-C

The sandbox

Package versions in this run

PackageVersion
bash5.2.37-2+b10
bsdextrautils2.41.5-0+deb13u1
coreutils9.7-3
curl8.14.1-2+deb13u7
dash0.5.12-12
diffutils1:3.10-4
findutils4.10.0-3
gawk1:5.2.1-2+b1
grep3.11-4
gzip1.13-1+deb13u1
iproute26.15.0-1
jq1.7.1-6+deb13u4
mawk1.3.4.20250131-1
openssh-client1:10.0p1-7+deb13u4
procps2:4.0.4-9
rsync3.5.0+ds1-0+deb13u1
sed4.9-2+deb13u1
tar1.35+dfsg-3.1
util-linux2.41.5-0+deb13u1
wget1.25.0-2
xz-utils5.8.1-1+deb13u2
zstd1.5.7+dfsg-1

On Debian and Ubuntu, a minimal install's awk is mawk; in this sandbox awk is GNU awk (/usr/bin/gawk), and the awk page notes where the two differ.

The sample project

Every example runs in the same small directory: logs, CSV and JSON data, some source code and a few images, all made up for this site (the IP addresses are from the ranges reserved for documentation). Seeing the same files again and again makes outputs easy to compare across commands.

~/demo
├── .env
├── access.log
├── data/
│   ├── config.json
│   ├── fruits.txt
│   ├── hosts.txt
│   ├── inventory.tsv
│   ├── numbers.txt
│   ├── poem.txt
│   ├── sales.csv
│   ├── servers.json
│   ├── settings.conf
│   ├── users.csv
│   └── windows.txt
├── file with spaces.txt
├── link-to-notes -> notes.txt
├── logs/
│   ├── app.log
│   ├── app.log.1
│   └── error.log
├── notes.txt
├── photos/
│   ├── beach.png
│   ├── forest.png
│   └── IMG_2041.png
├── README.md
├── scripts/
│   ├── backup.sh
│   └── greet.sh
├── src/
│   ├── app.py
│   ├── lib/
│   │   └── helpers.py
│   ├── main.c
│   ├── Makefile
│   └── util.sh
└── todo.txt

Checks that stop a build

The explainer's test corpus

121 command lines, each with an expected breakdown into tokens that was checked by hand and is now fixed (command, option, option value, argument, operator, redirection, keyword, assignment, here-document, comment and the nested commands inside $( ), <( ), xargs and find -exec). This build: 121 passed, 0 failed. They cover:

The explainer describes options only from the notes on this site's command pages. An option that is not in those notes is reported as unknown; the corpus includes such cases, so a change that starts guessing fails the tests.

How the text is written

Sources and licences