DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(bash.info) Pipelines

Info Catalog (bash.info) Simple Commands (bash.info) Shell Commands (bash.info) Lists
 
 3.2.2 Pipelines
 ---------------
 
 A `pipeline' is a sequence of simple commands separated by one of the
 control operators `|' or `|&'.
 
    The format for a pipeline is
      [time [-p]] [!] COMMAND1 [ | or |& COMMAND2 ] ...
 
 The output of each command in the pipeline is connected via a pipe to
 the input of the next command.  That is, each command reads the
 previous command's output.  This connection is performed before any
 redirections specified by the command.
 
    If `|&' is used, COMMAND1's standard error, in addition to its
 standard output, is connected to COMMAND2's standard input through the
 pipe; it is shorthand for `2>&1 |'.  This implicit redirection of the
 standard error to the standard output is performed after any
 redirections specified by the command.
 
    The reserved word `time' causes timing statistics to be printed for
 the pipeline once it finishes.  The statistics currently consist of
 elapsed (wall-clock) time and user and system time consumed by the
 command's execution.  The `-p' option changes the output format to that
 specified by POSIX.  When the shell is in POSIX mode ( Bash POSIX
 Mode), it does not recognize `time' as a reserved word if the next
 token begins with a `-'.  The `TIMEFORMAT' variable may be set to a
 format string that specifies how the timing information should be
 displayed.   Bash Variables, for a description of the available
 formats.  The use of `time' as a reserved word permits the timing of
 shell builtins, shell functions, and pipelines.  An external `time'
 command cannot time these easily.
 
    When the shell is in POSIX mode ( Bash POSIX Mode), `time'
 may be followed by a newline.  In this case, the shell displays the
 total user and system time consumed by the shell and its children.  The
 `TIMEFORMAT' variable may be used to specify the format of the time
 information.
 
    If the pipeline is not executed asynchronously ( Lists), the
 shell waits for all commands in the pipeline to complete.
 
    Each command in a pipeline is executed in its own subshell (
 Command Execution Environment).  The exit status of a pipeline is the
 exit status of the last command in the pipeline, unless the `pipefail'
 option is enabled ( The Set Builtin).  If `pipefail' is enabled,
 the pipeline's return status is the value of the last (rightmost)
 command to exit with a non-zero status, or zero if all commands exit
 successfully.  If the reserved word `!' precedes the pipeline, the exit
 status is the logical negation of the exit status as described above.
 The shell waits for all commands in the pipeline to terminate before
 returning a value.
 
Info Catalog (bash.info) Simple Commands (bash.info) Shell Commands (bash.info) Lists
automatically generated byinfo2html