Date: Fri, 8 Sep 2006 07:23:19 -0700 From: David King <dking@ketralnis.com> To: freebsd-questions@freebsd.org Cc: lassee@kth.se Subject: Re: How do I give 2 parameters to programs in an unix enviroment? Message-ID: <F05BCFC5-60FB-423A-9CFC-4085612D307B@ketralnis.com> In-Reply-To: <45016BBC.8080803@kth.se> References: <45016BBC.8080803@kth.se>
next in thread | previous in thread | raw e-mail | index | archive | help
Here's an example using zsh (I assume it's the same using bash, but different using tcsh or sh): diff <(find /usr/local -type f | sort) <(for each in /var/db/pkg/*/ +CONTENTS; do grep -v '^@' $each; done | sort) This does a diff(1) of what /var/db/pkg says that /usr/local should look like, and what it *really* looks like (note that it would need some tuning in order to actually be useful, but you get the idea) This uses the <() operator. What the <() operator does is create a named pipe in /tmp, execute the commands contained in the parenthesis in a subshell, and connect the stdout of the subshell into that named pipe. So it's sort of like using temp files, but you don't have to clean up after yourself. There's another, similar operator that does force it to use temp files, but I can never remember what it is :) Check the manpages for your shell Note that not all programs support using named pipes instead of files, since they expect to be able to do things like rewind the current position in the file descriptor. diff(1) looks to support it okay, though. A simplified version of your example would look like this: diff <(cat foo) <(cat bar) On 08 Sep 2006, at 06:10, Lasse Edlund wrote: > If I have two files "foo" and "bar" and try to run diff on them I > write: > $diff foo bar > I can also write > $cat foo | diff - bar > But how do I give a program two (2) commands? not only to diff > but to any program that wants double input... > I wanna do > $cat foo | cat bar | diff - - > especially with echo commands that would be handy so I dont have to > create files!
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?F05BCFC5-60FB-423A-9CFC-4085612D307B>