Unix is the starting point
A multi-user system with small tools, a hierarchical filesystem, and a powerful shell. Its design shaped generations of operating systems.
AN INTERACTIVE TECHNICAL FIELD GUIDE
Exploring macOS, Unix, and Linux
macOS, Unix, and Linux have different histories, but spend some time in their terminals and you’ll encounter familiar ideas. MacLinUnix explores where they came from, what they share, and where they differ.
An illustrated guide to Unix-style environments, with command comparisons and examples you can experiment with.
➜ ~ # notes: macos / unix / linux
Three environments, at a glance
➜ ~ _
01 — HISTORY
Unix started a way of thinking about computing.
Its ideas grew in more than one direction.
Simplified connections · The Apple branch combines BSD technologies with Mach, NeXT, and Apple development. Modern BSD systems and System V have their own branches.
A multi-user system with small tools, a hierarchical filesystem, and a powerful shell. Its design shaped generations of operating systems.
Under the Apple interface is Darwin, combining Mach, BSD components, and Apple technologies through the NeXT and Apple lineage. macOS releases have achieved UNIX certification; certification applies to specific versions and hardware.
Linux was independently written, inspired by Unix concepts. It shares the approach, but is not a direct descendant of the original Unix source code.
03 — COMMANDS
Compare everyday commands and the options
that differ between implementations.
Same name ≠ same options. Use man command on your own system to check its local manual.
04 — TOOLS
Package managers, services, and storage tools
vary even when the underlying task is similar.
| THE JOB | ⌘ macOS | λ Linux |
|---|---|---|
| Install software | Homebrew · MacPortsThird-party package managers | apt · dnf · pacman · zypperDepends on the distribution |
| Manage services | launchd · launchctl | systemd · systemctlCommon; alternatives exist |
| Store files | APFS | ext4 · Btrfs · XFS · ZFSZFS usually requires additional support |
| Run everyday commands | Often BSD-derived utilities | Often GNU utilitiesSome systems use alternatives, such as BusyBox |
| Monitor the system | Activity Monitor · top | top · htop · btophtop and btop may need installing |
05 — FILESYSTEM
Unix-style paths begin at /.
Each system adds its own conventions.
/ ← root directory
├── etcSystem configuration
├── usrUtilities & shared resources
├── varLogs & changing data
├── tmpTemporary files
├── binEssential commands
└── sbinSystem administration tools
/private. Many Linux systems merge /bin and /sbin into /usr.06 — PERMISSIONS
Read, write, and execute permissions apply
to the owner, group, and others.
07 — SHELLS
A shell interprets your commands.
A script makes them repeatable.
ls | grep ".txt"A pipe sends one command’s output into another. This filters listing lines; use find for reliable filename processing.
echo "Hello" > file.txtWrite output to a file. > overwrites; >> appends.
echo "$HOME"Read your home path from an environment variable. name="Ada" sets a shell variable; export name passes it to child processes.
today=$(date +%F) && echo "$today"$(command) captures output. && runs the next step only if the first succeeds.
For portable scripts, use a #!/bin/sh shebang and POSIX syntax. Bash, zsh, and fish features are not interchangeable; tool options still vary.
08 — NETWORKING
Remote connections use familiar protocols.
Local inspection tools differ by platform.
ssh opens a secure remote session. scp copies files; rsync synchronizes them. curl transfers data from URLs.
ifconfigip addrBoth help inspect network interfaces and addresses. Linux commonly favors ip over older ifconfig.
netstatssping checks reachability and traceroute traces routes. Availability and options vary by system.
09 — WHY SKILLS TRANSFER
Learning Linux makes the macOS terminal more familiar. Learning macOS command-line tools makes Linux less foreign. Paths, permissions, shells, pipes, processes, and SSH continue to connect these environments decades after Unix first appeared.
Much of that knowledge carries over when working on a remote system, too. Scripts often need only small adjustments, but shell syntax, command options, and system-specific tools are always worth checking.