Unix Fundamentals
Unix is a family of operating systems built around a small set of principles: everything is a file, programs do one thing well and compose through text streams, and the shell is the user interface to a tree of processes. Linux, macOS, and BSDs all descend from this lineage.
itOperating systems | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic: Unix Fundamentals
Unix is a family resemblance, not a single boxed product. The shared habit is to treat a computer as a place where small programs do narrow jobs and pass useful bytes to one another. It has survived impressively well, partly because it avoids asking every program to know everything, and partly because computers enjoy making that alternative everyone else's problem.
The central character is the process, a running program with an identity, a current working directory, an environment, and some open channels. Those channels are file descriptors, numbered handles for input and output. Zero normally reads input. One normally carries results. Two normally carries complaints. This numbering looks like a filing system designed by somebody who had misplaced the labels, but it lets unrelated programs cooperate without agreeing on much else.
The shell is the switchboard. It reads command text, decides which words and operators mean what, starts programs, and collects their exit status. A pipe sends one program's ordinary output to the next program's ordinary input. Redirection changes where a channel goes. That is the trick behind a surprising amount of Unix work: do one thing, pass the result along, and keep error messages out of the data stream so the next tool does not mistake a complaint for a record.
The filesystem supplies the map. A pathname beginning with slash starts from the root. A relative one starts from the current directory. Directories map names to objects, while regular files hold bytes and symbolic links name another path. The small surprise is that a directory is not a folder-shaped regular file. Its permissions control listing names, creating names, and moving through it during lookup. That distinction explains several moments when a path appears to exist but remains unusable.
Then there is POSIX, the shared floor rather than a universal ceiling. It describes portable shell, utility, and interface behavior. Bash, GNU tools, Linux, BSD systems, and macOS add their own details. So a command is a contract to check locally, not a spell that works everywhere because it worked once on a laptop.
Read the intro for the complete map of processes, files, permissions, and signals. Use the slides when the wiring needs a picture. Keep the cheatsheet nearby for descriptors, quoting, operators, and portability anchors. The practice reference turns those pieces into visible files and streams. After that, local manuals are where the pleasant theory meets the machine actually in front of you.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap01.html
Supports
- POSIX volume scope, including base definitions, system interfaces, shell command language, and utilities
- POSIX as the portable baseline rather than a statement that all Unix-like implementations behave identically
- https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap04.html
Supports
- Pathname resolution, including absolute pathnames beginning at root and relative pathnames resolved from the current working directory
- Directory entries, file hierarchy concepts, process identifiers, and process group identifiers
- https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap03.html
Supports
- Definitions of shell, shell script, signal, file descriptor, standard input, standard output, standard error, process, and symbolic link
- Definitions of core Unix terms used throughout the course
- https://pubs.opengroup.org/onlinepubs/9799919799/functions/V2_chap02.html
Supports
- Predefined standard input, standard output, and standard error streams at program startup
- POSIX signal actions and the fact that SIGKILL cannot be caught or ignored
- https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html
Supports
- Shell processing sequence: token recognition, parsing, word expansion, redirection, execution, and exit status
- Quoting, word expansion, simple commands, pipelines, redirections, exit status, and job control
- Pipeline connection from one command standard output to the next command standard input
- https://pubs.opengroup.org/onlinepubs/9799919799/utilities/contents.html
Supports
- Official index for POSIX shell utilities and their normative utility pages
- Portability guidance that starts from the standardized utility contract
- https://www.gnu.org/software/bash/manual/bash.html
Supports
- Bash as a command language interpreter and programming language
- Interactive and non-interactive shell behavior, builtins, command execution, quoting, redirection, exit status, and job control
- Bash relationship to the POSIX Shell and Utilities specification
- https://www.gnu.org/software/coreutils/manual/html_node/index.html
Supports
- GNU implementation documentation for common file and text utilities
- Distinction between a GNU utility implementation manual and the POSIX utility baseline
- https://www.kernel.org/doc/html/latest/filesystems/proc.html
Supports
- Linux proc filesystem as an interface for process and kernel runtime information
- https://man.openbsd.org/intro
Supports
- OpenBSD manual organization as a second Unix-family implementation reference
- https://personal.opengroup.org/~ajosey/LWE2004/UNIX_Poster/unix_posterA3_Screen.pdf
Supports
- Unix origin, Version 7, System V, POSIX.1, and Linux development dates used in the timeline
- https://www.bell-labs.com/usr/dmr/www/chist.pdf
Supports
- Unix kernel rewrite in C during 1973 and the 1978 C language reference
- https://docs-archive.freebsd.org/doc/4.9-RELEASE/usr/share/doc/handbook/history.html
Supports
- 4.4BSD-Lite release and FreeBSD transition after the Berkeley settlement
- https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/unistd.h.html
Supports
- POSIX.1-2001, POSIX.1-2008, POSIX.1-2017, and POSIX.1-2024 version relationships used in the timeline
- https://www.opengroup.org/austin/papers/posix_faq.html
Supports
- POSIX name origin and the IEEE Std 1003.1-1988 baseline
- https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux
Supports
- Red Hat Enterprise Linux as an enterprise Linux platform in the product landscape
- https://www.suse.com/products/server/
Supports
- SUSE Linux Enterprise Server as an enterprise Linux platform in the product landscape
- https://ubuntu.com/pro
Supports
- Ubuntu Pro as a supported and managed Ubuntu offering in the product landscape
- https://www.freebsd.org/
Supports
- FreeBSD as a BSD-family platform in the product landscape
- https://www.apple.com/macos/
Supports
- macOS as a Unix-derived desktop platform in the product landscape
- https://google.github.io/styleguide/shellguide.html
Supports
- Shell interpreter selection and the suitability boundary for complex shell scripts
