pwd
Print the directory that relative paths currently resolve from.
pwdA relative path is interpreted from the working directory, not necessarily the home folder.
The lab is designed to teach operator habits without running a command on your real machine.
pwdPrint the directory that relative paths currently resolve from.
pwdA relative path is interpreted from the working directory, not necessarily the home folder.
lsList directory entries; -a includes hidden names and -l adds ownership and permission detail.
ls -la /home/learnerA listing is not proof that you can read or modify every listed file.
cdChange the shell working directory; .. selects the parent and ~ identifies your home.
cd /var/logChanging directories changes how later relative paths resolve.
catRead one or more files to standard output without editing their contents.
cat /etc/hostnameReading a source file should precede changing it; avoid printing real secrets.
lessInspect text without changing the file. This simulator displays a bounded snapshot rather than an interactive pager.
less /var/log/syslogThe real less pager has navigation controls that are outside this lab subset.
headShow the beginning of an input; -n sets how many lines to include.
head -n 3 /var/log/syslogA small sample may omit the failure. Choose the time window you actually need.
tailShow the end of an input; -n selects the number of lines.
tail -n 3 /var/log/syslogThis browser lab snapshots output; it does not keep a live tail -f stream.
grepSelect input lines that match a pattern; -i ignores case, -n adds line numbers, and -v inverts selection.
grep -n nginx /var/log/syslogNo matches is exit status 1, which is different from a malformed invocation.
wcCount input. -l counts newline characters, -w counts whitespace-delimited words, and -c counts bytes.
wc -l /var/log/syslogText without a final newline may have fewer counted lines than visible rows.
sortOrder lines before comparing or grouping them; -n compares numerically and -r reverses order.
sort /etc/passwdAlphabetical sorting is not numeric sorting.
uniqCollapse adjacent duplicate lines; use sort first when duplicates are not already together.
printf "a\na\nb\n" | uniq -cuniq does not find every duplicate in an unsorted stream.
printfFormat data deliberately, including separators and final newlines.
printf "%s\n" readyA format string controls output; a newline is data, not an automatic guarantee.
echoWrite simple text to standard output. Prefer printf when exact formatting matters.
echo readyRedirection can overwrite an existing file before the command runs.
mkdirCreate a directory. -p also creates missing parent directories and accepts an existing directory.
mkdir -p lab/notesCreating a folder does not change the current directory.
touchCreate an empty file when absent, or update timestamps without truncating an existing file.
touch lab/check.txttouch is not a way to empty a file that already has content.
cpCopy a file to a new location, leaving the original in place.
cp /etc/hosts lab/hosts.copyConfirm the destination before replacing a file. This lab supports file copies, not every cp option.
mvMove or rename a file; the old path no longer names it afterward.
mv lab/old.txt lab/new.txtA successful move should be verified at both the destination and the old path.
rmRemove the named file from the virtual workspace. The training root and system trees are guarded.
rm lab/check.txtSimulator protections are not a promise that a real shell will protect the same target.
findSearch directory trees by criteria rather than relying on one shallow listing.
find /var/log -name "*.log"Quote wildcard patterns so find receives them instead of the shell expanding them first.
statInspect a file or directory metadata record, including ownership, permissions, and size.
stat /etc/hostsMetadata and file contents answer different questions.
fileIdentify a file from its characteristics rather than trusting only the filename extension.
file /etc/hostsThe simulator uses a small reviewed type classifier, not the full system magic database.
duEstimate usage attributed to files or directories; compare it with filesystem capacity when investigating storage.
du -sh /var/logdu describes file usage, whereas df describes filesystem capacity.
dfInspect the virtual filesystem capacity report. Real systems can run out of space or inodes independently.
df -hAvailable space is a snapshot, not a guarantee that a later write will succeed.
chmodChange permissions using an octal mode or a symbolic adjustment. Each rwx bit belongs to owner, group, or other.
chmod 640 lab/check.txtDo not use 777 as a blanket fix. Grant the smallest access needed.
chownChange ownership; on a real Linux system changing the file owner normally requires elevated privilege.
sudo chown learner:learners lab/check.txtOwnership and mode bits are separate controls; inspect both.
chgrpChange the file group within the permissions of the acting user.
chgrp learners lab/check.txtA group name alone does not grant access unless membership and mode bits agree.
idInspect user identity and group membership.
idA file group is useful only when the acting user belongs to it or has an applicable override.
whoamiPrint the effective user name.
whoamiAn elevated command can run with a different effective identity from the normal shell.
groupsList the groups associated with the training user.
groupsDirectory search permission also matters when accessing a file inside it.
sudoRun a permitted command as the simulated root user without changing the real computer.
sudo systemctl restart nginxShell redirections happen before sudo starts the command; sudo echo does not elevate the > operator.
psInspect a bounded snapshot of simulated processes.
ps auxA process being present does not prove that its service can handle requests.
pgrepFind simulated process IDs by a name pattern.
pgrep nginxVerify a process identity before sending a signal.
topInspect a single training snapshot of process and resource activity.
topThis lab does not run a continuously refreshing process monitor.
killSend an allowlisted signal to a simulated process target.
kill -TERM 321Prefer the service manager for managed daemons and understand the signal before using it.
systemctlInspect or change a simulated systemd service. Status, active state, and unit configuration reveal different evidence.
systemctl status nginxA service can be active while an application endpoint is unhealthy; verify both layers.
journalctlRead the training journal by unit or a bounded line window.
journalctl -u nginx -n 10A relevant unit and time range are more useful than an unfiltered wall of logs.
nginxCheck the simulated configuration using nginx -t before changing service state.
nginx -tThis lab checks a limited configuration subset, not the complete Nginx parser.
ssInspect simulated listening sockets and connection information.
ss -ltnpA listening socket is not proof of correct application responses or external reachability.
ipInspect simulated interface and route state.
ip routeAn interface address, a route, and a reachable service are separate parts of connectivity.
ufwInspect or adjust the training firewall rule list. No real firewall changes occur.
ufw status verboseFirewall rules should be scoped and reviewed; simulator access is not a production change approval.
curlRequest a fixed synthetic training endpoint. This sandbox never contacts an arbitrary network destination.
curl http://localhost/Check the HTTP result as well as the transport status; HTTP errors are not always curl failures without -f.
freeInspect simulated memory totals and availability.
free -hAllocated, cached, available, and free memory are not interchangeable measures.
uptimeRead simulated runtime and load information.
uptimeLoad average is not a direct CPU percentage.
unameInspect simulated operating-system identity.
uname -aA kernel string is not a complete inventory of packages or configuration.
hostnameRead the simulated host name.
hostnameA name helps orient an operator but is not proof of network reachability.
dateRead the lab clock representation and practice unambiguous timestamp labeling.
dateName the timezone when comparing evidence from different systems.
envInspect shell environment variables. Assignments and export affect the training environment, never your host shell.
envEnvironment output may expose real credentials outside the simulator.
historyReview commands entered during this session. History is a navigation aid, not evidence that a command succeeded.
historyCompletion in this release checks command outcomes, not history strings alone.
clearClear visible terminal output without erasing files or earned progress.
clearClearing the screen is not the same as resetting the lab.
resetReset the current virtual environment. It never resets the operating system running your browser.
resetSave a relevant result before discarding scratch work.
helpList the commands supported by this teaching simulator.
helpA familiar command may support fewer flags here than in a full shell.
manRead a short built-in teaching reference for one supported command.
man grepFor real administration, check the installed command manual and version too.
whichFind the simulated executable path for a command.
which nginxA path lookup does not prove that running the command will succeed.
typeDescribe the shell command resolution for a supported name.
type cdShell builtins and external commands are not resolved in exactly the same way.
basenameRemove directory components from a path string.
basename /etc/nginx/nginx.confString manipulation does not verify that the target exists.
dirnameExtract the directory portion of a path string.
dirname /etc/nginx/nginx.confA path can be syntactically valid without naming an existing directory.
readlinkInspect a symbolic-link target; use resolution options deliberately.
readlink /home/learner/currentA symlink contains a target path, not another copy of the target file.
realpathResolve a path to its canonical location in the virtual filesystem.
realpath /etc/../etc/hostsResolving a path and reading its contents are separate operations.
lnCreate a symbolic link in the lab with ln -s.
ln -s /etc/hosts lab/hosts.linkA relative symlink target is interpreted from the link directory.
tarPractice archive inventory, creation, and extraction in a simulated archive format.
tar -tf /home/learner/backups/site.tarThese training archives are virtual data structures, not downloadable production tar files.
diffCompare two text files; a difference is a meaningful nonzero status, not necessarily an execution error.
diff /etc/hosts /home/learner/lab/hosts.copyStatus 1 means differences for diff; shell status must be interpreted in command context.
sha256sumCompare content digests to detect byte changes, not to establish who authored the file.
sha256sum /etc/hostsA checksum detects changes only relative to a trusted expected digest.
cutExtract delimiter-separated fields or character ranges from text.
cut -d : -f 1 /etc/passwdA delimiter parser is not a general CSV parser with quoted fields.
awkExtract whitespace-delimited fields with the supported print patterns.
awk "{print $1}" /etc/hostnameQuote awk programs so shell variable expansion does not consume $1; single quotes are usually appropriate.
sedPreview a supported substitution or line range without changing the source file.
sed "s/localhost/training/" /etc/hostsWithout a global flag, a substitution normally changes only the first match on each line.
trTranslate or remove supported character sets from a stream.
printf "ready\n" | tr a-z A-Ztr operates on characters, not whole words or regular-expression matches.
teeCopy a stream both to a file and standard output; -a appends.
printf "ready\n" | tee lab/status.txttee can overwrite a file even though the output is also visible on screen.
xargsPractice constructing a supported command from input words.
printf "one two\n" | xargs echoWhitespace splitting does not safely represent every possible filename.
nlNumber input lines for a readable evidence reference.
nl -ba /etc/hostsLine numbers depend on the exact file version and numbering mode.
commCompare sorted line sets and select unique or common columns.
comm /home/learner/lab/a.txt /home/learner/lab/b.txtBoth inputs must be sorted under the same ordering rules.
testEvaluate a file or string condition through its exit status rather than printed output.
test -f /etc/hosts && echo presentA successful test usually prints nothing; inspect $? or chain a command.
mktempCreate a uniquely named scratch location in the virtual filesystem.
mktemp -dDo not guess a temporary filename when isolation matters.
nanoEdit a virtual text file using the browser editor and explicitly save it.
nano lab/runbook.txtOpening the editor does not complete a write task. Save and verify the contents.
sshInspect a fixed SSH training scenario; no real remote connection is made.
ssh learner@training-hostVerify host identity and choose credentials deliberately on real systems.
ssh-keygenReview or create a simulated SSH-key artifact. It is not a usable cryptographic credential.
ssh-keygen -lf /home/learner/.ssh/id_ed25519.pubDo not confuse public keys, private keys, and host fingerprints.
scpPractice a fixed simulated copy workflow without network transfer.
scp lab/note.txt learner@training-host:/tmp/Direction, destination, and host identity matter before copying real files.
aptInspect a fixed training package inventory. The simulator cannot install or upgrade your computer.
apt policy nginxCandidate, installed, and repository versions answer different questions.
dpkgInspect installed-package records in the synthetic Debian-style environment.
dpkg -l nginxRepository availability and installed package state are separate evidence.
brewReview a synthetic Homebrew package record alongside the Linux-oriented labs.
brew info nginxHomebrew and apt are different platform ecosystems; these outputs are training fixtures.
crontabInspect the simulated user schedule. No task is scheduled outside the browser.
crontab -lA scheduled entry is not proof that its last run succeeded.
logrotateInspect or dry-run a simulated log-rotation policy.
logrotate -d /etc/logrotate.confA dry run reports intended behavior without rotating real logs.
lsofInspect a synthetic association between processes and open files or sockets.
lsof -i :80Combine process and socket evidence rather than assuming a service from its port number.
mountInspect a synthetic mounted-filesystem table.
mountMount options can affect writability independently of file ownership.
lsblkInspect a synthetic block-device tree.
lsblkA device, partition, filesystem, and mount point are different concepts.
launchctlInspect a fixed macOS launch-service fixture rather than invoking systemd.
launchctl listPlatform-specific service managers are not interchangeable.
plutilInspect a fixed property-list fixture used in macOS-oriented lessons.
plutil -lint /home/learner/lab/service.plistA valid configuration syntax check does not prove runtime behavior.
jqSelect a supported JSON field, array value, or length from a fixture.
jq .status /opt/ai-lab/case.jsonJSON values have types. This lab supports a small read-only subset of jq filters.
aiopsInspect the fixed AI training inventory and reports. All outputs are synthetic, not live provider measurements.
aiops models listA canned inspection is practice evidence, not an operational measurement.
You can use every Learn lab without an account. Anonymous progress lasts only for this browser session.
Your practice is ready.
Signing in keeps lesson completion, XP, missions, and streak progress between sessions. Lab files and typed commands stay on this device.