Combining Commands
You can connect commands together with a | character (vertical bar, or pipe) to make the output of the first become the input of the second:
%ls | wc -lCount number of files in current directory %who | grep colinFind out if colin is logged in
One of the most common uses of pipes is to add more to the end of a command so you can keep the output from scrolling off the screen:
% cal 1492 | more View calendar for year 1492 using pagerCommands connected with pipes form a longer command called a pipeline. Pipelines can consist of more than two programs. The following command lists the sizes (in disk blocks) and names of your files, strips off the initial "total size" line, sorts the rest of the sizes in reverse numeric order, and then displays the first five lines of the result. The effect is to report your five largest files:
% ls -s | tail +2 | sort -rn | head -5By giving you the ability to construct pipelines, the shell allows you to do things that individual commands cannot do by themselves.
Pipelines and output redirection can be used together:
% ls -s | tail +2 | sort -rn | head -5 > big5You can combine the output of sequential commands if you surround the sequence with parentheses. These two command lines are different:
%date ; who | more%(date ; who) | more
The first sequence writes the output of date to the terminal and the output of who to more. The second sequence writes the output of both commands to more.
The same principle applies to output redirection: ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access