(coreutils.info.gz) I/O redirection

Info Catalog (coreutils.info.gz) Toolbox introduction (coreutils.info.gz) Opening the software toolbox (coreutils.info.gz) The who command
 
 I/O Redirection
 ===============
 
 Hopefully, you are familiar with the basics of I/O redirection in the
 shell, in particular the concepts of "standard input," "standard
 output," and "standard error".  Briefly, "standard input" is a data
 source, where data comes from.  A program should not need to either know
 or care if the data source is a disk file, a keyboard, a magnetic tape,
 or even a punched card reader.  Similarly, "standard output" is a data
 sink, where data goes to.  The program should neither know nor care
 where this might be.  Programs that only read their standard input, do
 something to the data, and then send it on, are called "filters", by
 analogy to filters in a water pipeline.
 
    With the Unix shell, it's very easy to set up data pipelines:
 
      program_to_create_data | filter1 | ... | filterN > final.pretty.data
 
    We start out by creating the raw data; each filter applies some
 successive transformation to the data, until by the time it comes out of
 the pipeline, it is in the desired form.
 
    This is fine and good for standard input and standard output.  Where
 does the standard error come in to play?  Well, think about 'filter1' in
 the pipeline above.  What happens if it encounters an error in the data
 it sees?  If it writes an error message to standard output, it will just
 disappear down the pipeline into 'filter2''s input, and the user will
 probably never see it.  So programs need a place where they can send
 error messages so that the user will notice them.  This is standard
 error, and it is usually connected to your console or window, even if
 you have redirected standard output of your program away from your
 screen.
 
    For filter programs to work together, the format of the data has to
 be agreed upon.  The most straightforward and easiest format to use is
 simply lines of text.  Unix data files are generally just streams of
 bytes, with lines delimited by the ASCII LF (Line Feed) character,
 conventionally called a "newline" in the Unix literature.  (This is
 ''\n'' if you're a C programmer.)  This is the format used by all the
 traditional filtering programs.  (Many earlier operating systems had
 elaborate facilities and special purpose programs for managing binary
 data.  Unix has always shied away from such things, under the philosophy
 that it's easiest to simply be able to view and edit your data with a
 text editor.)
 
    OK, enough introduction.  Let's take a look at some of the tools, and
 then we'll see how to hook them together in interesting ways.  In the
 following discussion, we will only present those command line options
 that interest us.  As you should always do, double check your system
 documentation for the full story.
 
Info Catalog (coreutils.info.gz) Toolbox introduction (coreutils.info.gz) Opening the software toolbox (coreutils.info.gz) The who command
automatically generated by info2html