Cómo escribir la salida de live-f1 en un archivo

10

Abrí la terminal y ejecuté live-f1 que muestra la transmisión en vivo en la terminal (texto) que cambia cada segundo. Solo se puede usar la tecla "Enter" mientras este programa se está ejecutando (sale de ese programa). Entonces no puedes escribir nada más en la consola.

Me gustaría escribir el contenido del terminal en un archivo, como después de cada segundo.

¿Cómo puedo hacerlo?

¿Al abrir la segunda consola y usar algún comando?

No puedo hacer que funcione con el comando setterm -dump.

Gustav
fuente

Respuestas:

8

live-f1vuelve a dibujar la pantalla con nuevos datos utilizando caracteres de control de terminal (ncurses), como topo mtr. Es por eso que ve toda esta basura cuando redirige a un archivo o dispositivo no terminal.

Desafortunadamente, live-f1no proporciona una opción para obtener resultados apropiados para guardar y luego extraer datos para estadísticas y demás. Si aún desea guardar la salida para reproducirla más tarde, puede usarla script.

Esto registrará live-f1 y creará dos archivos, mecanografiado y archivo de tiempo.

script -c live-f1 -t 2> timingfile

Esto reproducirá la salida

scriptreplay timingfile
forcefsck
fuente
7

Hay algunas formas que utilizo para capturar resultados en un archivo que pueden serle útiles.

script

Esto crea una subshell y pone todos los resultados en ella. Entonces script, haz lo que quieras, luego exitpara finalizar tu subshell y tu salida estará en un archivo llamado "mecanografiado"

tee

Puede hacer eco de toda una tubería a otro lugar. Entonces puede teedesactivar su salida estándar en un archivo:

$ mycommand | tee myoutput

Si necesita capturar el error estándar también, rediríjalo:

$ mycommand 2>&1 | tee myoutput
starfry
fuente
6

¿Qué hay de ejecutar el programa de esta manera:

program > /path/to/file

Esto redirige la salida de programa /path/to/fileinstantáneamente.

Y si desea tener la salida en su terminal, así como guardarla en un archivo. Echa un vistazo ¿Hay alguna manera en bash para redirigir la salida y aún así tener que ir a stdout?

phunehehe
fuente
Gracias por la respuesta rápida Esto casi funciona, solo el contenido del archivo está poco destrozado. Debería estar en HTML, pero cuando abro el archivo hay algunos símbolos extraños, mira la captura de pantalla: upload.ee/image/1223166/ss_01.png . El nombre del programa es live-f1.
Gustav
Eso se ve gracioso. ¿Estás seguro de que el programa solo genera HTML? ¿Hay alguna animación o algo raro?
phunehehe
Esto solo redirigirá la salida estándar. ¿También se requiere un error estándar?
Faheem Mitha
2
@Gustav También hay códigos ANSI atrapados allí. O su aplicación genera algún tipo de contador de progreso (que es lo que parece), o colorea su salida, o similar. Si hay alguna forma de desactivar esto, deberá usarlo para capturar resultados limpios. Sin embargo, su aplicación no genera HTML, por lo que para capturar HTML necesitará alguna otra aplicación para traducir el resultado.
Matthew Scharley
Por qué estoy diciendo que es HTML, porque lo hice funcionar hace un año, pero he reformateado el disco donde tenía el entorno de trabajo. Mi objetivo es obtener las posiciones de los conductores de Fórmula 1 del feed live-f1 en un archivo. Lo hice funcionar el año pasado ejecutando el programa live-f1 en la primera terminal, luego encendiendo la segunda terminal y usando algún comando que capturó la primera pantalla de la terminal y la guardé en un archivo (copia del archivo del año pasado: upload.ee/download/1223347 /0b6545ce227661452c8/html.log ). El comando era algo así: tty "primer puntero terminal" "nombre de archivo" "intervalo"
Gustav
3

Puede usar la pantalla GNU , junto con su funcionalidad de registro . Tenga en cuenta también que el logfile flush secscomando le permite controlar con qué frecuencia la salida se vacía en el disco. Del manual del usuario de la pantalla:

- Comando: logfile flush secs

Define el nombre que obtendrán los archivos de registro. El valor predeterminado es 'screenlog.% N'. La segunda forma cambia la cantidad de segundos que la pantalla esperará antes de vaciar el búfer del archivo de registro al sistema de archivos. El valor predeterminado es 10 segundos.

Faheem Mitha
fuente
Lo miraré.
Gustav