Redirecting bash stdout/stderr to two places? Redirecting bash stdout/stderr to two places? bash bash

Redirecting bash stdout/stderr to two places?


You can use a named pipe, which is intended for exactly the situation you describe.

mkfifo some_pipecommand_that_writes_to_stdout | tee some_pipe \  & command_that_reads_from_stdin < some_piperm some_pipe

Or, in Bash:

command_that_writes_to_stdout | tee >(command_that_reads_from_stdin)


Is it possible to redirect stdout and stderr to both the terminal output and to a program?

I'm not sure how useful it is to combine stdout and stderr on the input to an editor, but does omething like this do what you need?

input_prog 2>&1 | tee /dev/tty | my_editor


I don't actually know whether TextMate can take a file to edit as its standard input, that seems a little bizarre. I suspect you would want to send the stdout/stderr to a file and edit it there, in which case you need:

progname 2>&1 | tee tempfile ; textmate tempfile

The 2>&1 redirects stderr (file handle 2) to go to the same place as stdout (file handle 1) so that both of them end up in a single stream. The tee command then writes that to tempfile as well as stdout.

Then, once the process has finished, the editor is called up on the temporary file.

If it can accept standard input for editing, use:

progname 2>&1 | tee /dev/tty | textmate