Go to main content

man pages section 1: User Commands

Exit Print View

Updated: July 2017
 
 

unbuffer (1)

Name

unbuffer - unbuffer output

Synopsis

unbuffer program [ args ]

Description

UNBUFFER(1)                 General Commands Manual                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 programs.  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  pro-
       duced.

       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  impossi-
       ble 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 pro-
       cessing 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 process 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.



ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:


       +---------------+------------------+
       |ATTRIBUTE TYPE | ATTRIBUTE VALUE  |
       +---------------+------------------+
       |Availability   | shell/expect     |
       +---------------+------------------+
       |Stability      | Uncommitted      |
       +---------------+------------------+
SEE ALSO
       "Exploring Expect: A Tcl-Based Toolkit for Automating Interactive  Pro-
       grams" by Don Libes, O'Reilly and Associates, January 1995.

AUTHOR
       Don Libes, National Institute of Standards and Technology



NOTES
       This     software     was    built    from    source    available    at
       https://java.net/projects/solaris-userland.   The  original   community
       source         was        downloaded        from         http://source-
       forge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz/download

       Further information about this software can be found on the open source
       community website at http://expect.nist.gov/.



                                  1 June 1994                      UNBUFFER(1)