the series
Rebuilding Unix Tools from Scratch in C: one tool per episode,
one core concept per tool. No stdio.h. No shortcuts.
// published
// in the pipeline
04
wc(1)
state machines · character I/O · multiple flags
planned
05
echo(1)
argc/argv deep dive · escape sequence parsing
planned
06
tr(1)
lookup tables · character sets · -d -s modes
planned
07
cut(1)
delimiter parsing · string tokenization
planned
★B
peek: first/last N lines with gap
lseek() as main event · two-pass read · gap output
planned
08
sort(1)
dynamic arrays · qsort() · malloc / realloc
planned
09
uniq(1)
strcmp() · adjacent comparison · -c mode
planned
10
grep(1)
strstr() → regex.h · regcomp() · line buffering
planned
★C
tally: frequency counter
linked list in C · unknown data volume · frequency sort
planned
11
ls(1)
opendir / readdir · stat() · permission bitmasks
planned
12
cp(1)
buffered I/O · recursive dir walk · permissions copy
planned
★ Custom Tools
Episodes marked ★ are original tools that do not exist in Unix. Each one bridges a pedagogical gap between the surrounding episodes: a concept that demands its own dedicated build before the next standard tool makes sense.