GNU/Linux >> Tutoriales Linux >  >> Linux

¿Mostrar solo Stderr en pantalla pero escribir tanto Stdout como Stderr en el archivo?

¿Cómo puedo usar BASH magic 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 tanto stdout como stderr terminen en el mismo archivo. En el orden en que suceden.
Desafortunadamente, ninguna de las respuestas a continuación hace esto.

Respuesta aceptada:

Incluso sin ninguna redirección, o sin 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 tendrá un búfer de línea (a tty) o un búfer (a una canalización), 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 subsiguientes en cualquier tubería que pueda inventar no obtendrán acceso ordenado determinísticamente a las dos secuencias (conceptualmente son cosas que suceden en paralelo, y usted siempre está sujeto al programador; si para cuando su lector obtiene una porción, el escritor ya tiene 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. Ordenar la salida a través de stdout/stderr es un problema bien conocido, quizás clásico.


Linux
  1. Cómo redirigir la salida a un archivo y salida estándar en Linux

  2. ¿Configurar el Shell para imprimir Stderr y Stdout en diferentes colores?

  3. Redirigir toda la salida al archivo en Bash

  4. Eco para stdout y stderr

  5. Determinar si la salida es stdout o stderr

Bash:escribir en archivo

Cómo redirigir stderr a stdout en Bash

¿Qué forma de redirigir la salida de un programa y todavía hacer que vaya a la salida estándar?

¿Cómo redirigir solo Stderr?

Cómo redirigir la salida a un archivo y stdout

¿Confundido acerca de stdin, stdout y stderr?