There are some commands which filter or act on input, and then pass it along as output, I think usually to
stdout - but some commands will just take the
stdin and do whatever they do with it, and output nothing.
I'm most familiar with OS X and so there are two that come to mind immediately are
pbpaste- which are means of accessing the system clipboard.
Anyhow, I know that if I want to take stdout and spit the output to go to both
stdout and a file then I can use the
tee command. And I know a little about
xargs, but I don't think that's what I'm looking for.
I want to know how I can split
stdout to go between two (or more) commands. For example:
cat file.txt | stdout-split -c1 pbcopy -c2 grep -i errors
There is probably a better example than that one, but I really am interested in knowing how I can send stdout to a command that does not relay it and while keeping
stdout from being "muted" - I'm not asking about how to
cat a file and
grep part of it and copy it to the clipboard - the specific commands are not that important.
Also - I'm not asking how to send this to a file and
stdout - this may be a "duplicate" question (sorry) but I did some looking and could only find similar ones that were asking about how to split between stdout and a file - and the answers to those questions seemed to be
tee, which I don't think will work for me.
Finally, you may ask "why not just make pbcopy the last thing in the pipe chain?" and my response is 1) what if I want to use it and still see the output in the console? 2) what if I want to use two commands which do not output
stdout after they process the input?
Oh, and one more thing - I realize I could use
tee and a named pipe (
mkfifo) but I was hoping for a way this could be done inline, concisely, without a prior setup :)