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 pbcopy
and 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 :)