Estoy ejecutando un programa Java desde una OS X 10.8
terminal bash y estoy intentando redirigir el resultado que está produciendo.
Sin embargo, cuando se ejecuta esto a través de una tubería o se redirige a un archivo, el resultado está en blanco, sin embargo, veo el resultado en la terminal.
Para ilustrar esto:
> java program.java
13/10/02 14:18:30 WARN some
13/10/02 14:18:30 INFO log
13/10/02 14:18:30 INFO messages
...
> java program.java > log
> cat log
>
¿Se puede configurar el programa Java para que escriba en otra secuencia que no sea stdout
, pero una secuencia que aún produzca resultados en la terminal? ¿Es posible tal cosa?
Respuesta1
Haytresarchivos estándar abiertos para cada programa, stdin
(entrada estándar), stdout
(salida estándar) y stderr
(error estándar). Escribe en ambos stdout
y stderr
se genera en la terminal de forma predeterminada.
Es una convención común escribir errores y registrar mensajes stderr
en lugar de stdout
para no mezclar mensajes de registro o de error con la salida real del programa. Puedes redirigir stderr
usando 2>
, por ejemplo:
command 2> log