In the context of Unix operating systems, a pipe signifies that the output of one program feeds directly as input to another program. The Unix shell uses the pipe character (|) to join programs together. A sequence of commands joined together by pipes is known as a pipeline. For creating this mechanism, all Unix tools have access to three distinct files:
Often filter programs form the constituent programs in a pipeline.
An example of a pipeline:
cat * | grep "alice" | grep -v "wonderland" | wc -lwill print out the number of lines in all files in the current directory which contain the text "alice", but not the text "wonderland".
The pipeline has four parts:
cat *
concatenates the text of all files to its stdout;
grep "alice"
reads its stdin as lines, and prints on its stdout only those lines which contain the word "alice";
grep -v "wonderland"
reads its stdin and prints on its stdout only those remaining lines which do not contain the word "wonderland";
wc -l
counts the lines on its stdin, and prints a line count on its stdout.