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