Frequently Asked Question
What is the Unix philosophy and why does it matter for pipes?
The Unix philosophy, formalised by Doug McIlroy in 1978, is the design principle
behind every classic command-line tool: write programs that do one thing and do
it well, write programs that work together, and write programs that handle text
streams because text is a universal interface. Instead of building one giant
tool to do log analysis, you build small tools, grep to filter, sort to
order, uniq to deduplicate, awk to project columns, and the pipe to glue
them together.
Pipes are the load-bearing piece of this whole philosophy. Without a way to send one program's output into another's input, "small tools that do one thing well" would be no more useful than disconnected library functions. With pipes, composition becomes natural and ad-hoc data analysis becomes a one-liner. This is the reason a Unix shell feels qualitatively more powerful than a string of menu commands in a GUI: every program is potentially a building block for whatever pipeline you haven't thought of yet.