terminal
Terminal and TTY behaviour
-
cd
Tested cd examples: why no program could do this job, what cd - and $OLDPWD hold, and the two different answers cd .. gives under a symlink.
-
cowsay
Tested cowsay examples: piping output into it, the wrapping rules that catch people out, cowfiles and how to write one, and why -f on a download runs code.
-
job control
Tested jobs, fg, bg, disown and nohup examples: the jobs table, job specs like %1, suspending and resuming, and why none of it works in a script.
-
less
Tested less examples: the keys that move and search, why a piped less turns into cat, and how lesspipe lets it open a compressed file directly.
-
ls
Tested ls examples: the long format column by column, hidden files, sorting by time and size, symlinks, time styles, and why piped output looks different.
-
Environment variables and PATH
Why a program you can see and execute is still not found, how the environment is copied into each new process, and where PATH is really set on Debian.
-
Pipes and redirection
How | connects commands together, and how >, >>, 2>&1, and <() route data to and from files, other commands, and each other.
-
Processes and signals
How processes are born, orphaned and reaped, what a signal actually does, why kill -9 is a last resort, and why Ctrl-C stops a whole pipeline at once.
-
Terminal, shell and tty
What a terminal, a tty, a shell and a console each actually are, why Ctrl-D is not a signal, and why Ctrl-S appears to freeze everything.