diff --git a/ChangeLog b/ChangeLog index cfb5c79cb..e39c84e3c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2007-11-01 Jim Meyering + Say that the first process substitution example is contrived. + * doc/coreutils.texi (tee invocation): ... and show how to do + it properly. Pointed out by James Antill. + Use mktemp, not mkdtemp, to create test directories. * tests/test-lib.sh: Use the mktemp binary we've just built, not the mkdtemp script. diff --git a/doc/coreutils.texi b/doc/coreutils.texi index aa25fcd08..9c960a57e 100644 --- a/doc/coreutils.texi +++ b/doc/coreutils.texi @@ -11076,6 +11076,7 @@ and SHA1 computation. Then, you'll get the checksum for free, because the entire process parallelizes so well: @example +# slightly contrived, to demonstrate process substitution wget -O - http://example.com/dvd.iso \ | tee >(sha1sum > dvd.sha1) > dvd.iso @end example @@ -11093,8 +11094,17 @@ so it works with @command{zsh}, @command{bash}, and @command{ksh}, but not with @command{/bin/sh}. So if you write code like this in a shell script, be sure to start the script with @samp{#!/bin/bash}. +Since the above example writes to one file and one process, +a more conventional and portable use of @command{tee} is even better: + +@example +wget -O - http://example.com/dvd.iso \ + | tee dvd.iso | sha1sum > dvd.sha1 +@end example + You can extend this example to make @command{tee} write to two processes, -computing MD5 and SHA1 checksums in parallel: +computing MD5 and SHA1 checksums in parallel. In this case, +process substitution is required: @example wget -O - http://example.com/dvd.iso \