Man Pages

unbuffer(1) - phpMan unbuffer(1) - phpMan

Command: man perldoc info search(apropos)  


UNBUFFER(1)                                                        UNBUFFER(1)



NAME
       unbuffer - unbuffer output

SYNOPSIS
       unbuffer program [ args ]

INTRODUCTION
       unbuffer  disables the output buffering that occurs when program output is redirected from non-interactive pro-
       grams.  For example, suppose you are watching the output from a fifo by running it through od and then more.

            od -c /tmp/fifo | more

       You will not see anything until a full page of output has been produced.

       You can disable this automatic buffering as follows:


            unbuffer od -c /tmp/fifo | more

       Normally, unbuffer does not read from stdin.  This simplifies use of  unbuffer  in  some  situations.   To  use
       unbuffer in a pipeline, use the -p flag.  Example:

               process1 | unbuffer -p process2 | process3

CAVEATS
       unbuffer -p may appear to work incorrectly if a process feeding input to unbuffer exits.  Consider:
               process1 | unbuffer -p process2 | process3

       If  process1 exits, process2 may not yet have finished.  It is impossible for unbuffer to know long to wait for
       process2 and process2 may not ever finish, for example, if it is a filter.   For  expediency,  unbuffer  simply
       exits when it encounters an EOF from either its input or process2.

       In  order  to  have  a version of unbuffer that worked in all situations, an oracle would be necessary.  If you
       want an application-specific solution, workarounds or hand-coded Expect may be more suitable.  For example, the
       following  example  shows  how to allow grep to finish processing when the cat before it finishes first.  Using
       cat to feed grep would never require unbuffer in real life.  It is merely a placeholder for some imaginary pro-
       cess that may or may not finish.  Similarly, the final cat at the end of the pipeline is also a placeholder for
       another process.


       $ cat /tmp/abcdef.log | grep abc | cat
       abcdef
       xxxabc defxxx
       $ cat /tmp/abcdef.log | unbuffer grep abc | cat
       $ (cat /tmp/abcdef.log ; sleep 1) | unbuffer grep abc | cat
       abcdef
       xxxabc defxxx
       $

BUGS
       The man page is longer than the program.


SEE ALSO
       "Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs" by Don Libes,  O'Reilly  and  Asso-
       ciates, January 1995.

AUTHOR
       Don Libes, National Institute of Standards and Technology



                                  1 June 1994                      UNBUFFER(1)