summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--doc/coreutils.texi12
2 files changed, 15 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index cfb5c79cb..e39c84e3c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2007-11-01 Jim Meyering <meyering@redhat.com>
+ 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 \