Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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 so-
       lution, workarounds or hand-coded Expect	may be more suitable.  For ex-
       ample, the following example shows how to allow grep to finish process-
       ing 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.

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

				  1 June 1994			   UNBUFFER(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=expect_unbuffer&sektion=1&manpath=FreeBSD+Ports+14.3.quarterly>

home | help