dev and bash redirect

bash - and - 2>&1 linux



¿Redirigir bash stdout/stderr a dos lugares? (3)

¿Es posible redirigir stdout y stderr tanto a la salida del terminal como a un programa?

No estoy seguro de lo útil que es combinar stdout y stderr en la entrada a un editor, pero ¿hacer esto lo que usted necesita?

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

Este me ha estado molestando por un tiempo ahora. ¿Es posible redirigir stdout y stderr tanto a la salida del terminal como a un programa?

Entiendo que es posible redirigir las salidas a un archivo y a stdout con tee , pero quiero que vaya a un programa (mi editor [TextMate]), así como a la salida del terminal ... seguramente esto es posible (sé que es posible con zsh ...)


Puede usar un conducto con nombre, que está destinado exactamente para la situación que describe.

mkfifo some_pipe command_that_writes_to_stdout | tee some_pipe / & command_that_reads_from_stdin < some_pipe rm some_pipe

O, en Bash:

command_that_writes_to_stdout | tee >(command_that_reads_from_stdin)


Realmente no sé si TextMate puede tomar un archivo para editar como su entrada estándar, eso parece un poco extraño. Sospecho que le gustaría enviar el stdout / stderr a un archivo y editarlo allí, en cuyo caso necesita:

progname 2>&1 | tee tempfile ; textmate tempfile

El 2>&1 redirige el stderr (identificador de archivo 2) para ir al mismo lugar que stdout (identificador de archivo 1) para que ambos terminen en una sola secuencia. El comando tee luego escribe eso para tempfile así como stdout .

Luego, una vez que el proceso ha terminado, se llama al editor en el archivo temporal.

Si puede aceptar entrada estándar para editar, use:

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