Sé cómo redirigir a un archivo y usar tee; en un nivel básico Entonces
$ alias outanderr='bash -c "echo stdout >&1; echo stderr >&2"'
# A fake "application" displaying both output and error messages.
$ outanderr 1>file # redirect stdout to a file, display stderr
stderr
$ outanderr 2>file # redirect stderr to a file, display stdout
stdout
$ outanderr 1>file 2>&1 # redirect both to a file, display nothing
$ outanderr | tee file; echo "-- file contents --" && cat file
# redirect stdout to a file, display both (note: order is messed up)
stderr
stdout
-- file contents --
stdout
$ outanderr 2>&1 | tee file; echo "-- file contents --" && cat file
# redirect both to a file, display both
stdout
stderr
-- file contents --
stdout
stderr
La pregunta es: qué escribir en lugar de los signos de interrogación para obtener el resultado a continuación:
$ outanderr ???; echo "-- file contents --" && cat file
# redirect both to a file, display stderr
stderr
-- file contents --
stdout
stderr
Constaints:
- Asumiendo bash.
- El pedido debe mantenerse en el archivo.
- Los contenidos de stderr se muestran en tiempo real línea por línea, es decir, sin almacenamiento en búfer.
- Se pueden usar archivos de script separados.
- La magia puede ser necesaria.
outanderr
solo hay un alias que imprime una línea en stdout y otra en stderr. La idea (si es posible) es crear una solución genérica que pueda funcionar con cualquier programa, sin modificarlos.
outanderr
programa tienes?