bash – Mostrar solo stderr en la pantalla pero escribir tanto stdout como stderr en el archivo

Pregunta:

¿Cómo puedo usar la magia BASH para lograr esto?
Solo quiero ver la salida stderr en la pantalla,
pero quiero que tanto stdout como stderr se escriban en un archivo.

Aclaración: quiero que stdout y stderr terminen en el mismo archivo. En el orden en que suceden.
Desafortunadamente, ninguna de las respuestas a continuación hace esto.

Respuesta:

Incluso sin ninguna redirección, o con nada más que >logfile 2>&1 , no está garantizado que vea la salida en orden de generación.

Para empezar, la salida estándar de la aplicación estará almacenada en búfer de línea (a tty) o en búfer (a una tubería), pero stderr no tiene búfer, por lo que las relaciones entre el orden de salida se rompen en lo que respecta al lector. Las etapas posteriores en cualquier canalización que pueda inventar no obtendrán acceso ordenado de manera determinista a las dos transmisiones (conceptualmente son cosas que suceden en paralelo, y siempre está sujeto al programador, si para cuando su lector obtiene una porción, el escritor ya lo ha hecho). escrito en ambas tuberías, no se puede saber cuál vino primero).

"[E] l orden en que suceden" solo lo conoce realmente la aplicación. La ordenación de la salida a través de stdout / stderr es un problema bien conocido (quizás clásico).

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım