Asciinema: Cast contiene un comando de salida no deseado

Creado en 24 feb. 2018  ·  3Comentarios  ·  Fuente: asciinema/asciinema

Hola,

Me preguntaba por qué se imprime un exit después de presionar CTRL + D para terminar el yeso usando rec .

redaxmedia<strong i="10">@redaxmedia</strong>:~$ exit
asciinema: recording finished
asciinema: press <enter> to upload to asciinema.org, <ctrl-c> to save locally

Un elenco generado por asciinema 1.xx se ve bien; me gustaría deshacerme de él nuevamente.

Antes

Before

Después

After

Comentario más útil

Cuando lancé 2.0, estaba al tanto de esta regresión, pero no quería bloquear el lanzamiento debido a eso. Pero ahora es un buen momento para discutirlo.

Esta es su impresión de shell exit cuando presiona ctrl + d por cierto :)

La versión anterior de asciinema guardaba toda la grabación en la memoria antes de guardarla en un archivo, y era fácil detectar la "salida" en el último fotograma grabado y desecharlo (porque asciinema sabía que era el último fotograma). Con la nueva versión vino un nuevo formato de archivo, que es más en tiempo real, fácil de transmitir y escribe en el disco en tiempo real. Debido a esto, cuando finaliza la sesión de grabación, la "salida" ya se ha escrito en un archivo. Y no podemos simplemente tirar cualquier "salida" impresa en una terminal, solo podemos eliminar la última, porque podrías tener sesiones de bash anidadas y esta "salida" puede ser información útil para alguien que vea que saliste del shell interno. .

Hay varias posibles soluciones para esto:

  1. al grabar, mantenga el último fotograma en la memoria y escríbalo en el disco cuando llegue el nuevo, lo que lo convierte en un búfer de tamaño de 1 fotograma; la desventaja aquí es que podría causar la pérdida de datos en caso de bloqueo / cierre del terminal (aunque solo 1 fotograma),
  2. después de cerrar el archivo al final de la sesión, podríamos volver a abrirlo y filtrar la "salida" final; tendría que hacerse en forma de transmisión (para no cargar todo en la memoria), de manera similar a la solución 1. ,
  3. filtrarlo en el tiempo de reproducción en lugar de en el tiempo de grabación; esto requeriría alguna forma de lectura anticipada para asciinema play .... en la terminal, pero se puede hacer muy fácilmente en el reproductor web, que almacena toda la grabación en la memoria (eso es una tema, idealmente me gustaría no requerir una grabación completa en los navegadores web mem)

En general, prefiero no modificar los datos de origen al grabar (cambiar texto, cambiar el tiempo, eliminar fotogramas). Eliminar la "salida" final es eliminar datos de la transmisión, sin embargo, no es algo que el usuario realmente desee, así que está bien que me deshaga de ella.

La solución 2. me parece la más simple en este momento.

Todos 3 comentarios

Cuando lancé 2.0, estaba al tanto de esta regresión, pero no quería bloquear el lanzamiento debido a eso. Pero ahora es un buen momento para discutirlo.

Esta es su impresión de shell exit cuando presiona ctrl + d por cierto :)

La versión anterior de asciinema guardaba toda la grabación en la memoria antes de guardarla en un archivo, y era fácil detectar la "salida" en el último fotograma grabado y desecharlo (porque asciinema sabía que era el último fotograma). Con la nueva versión vino un nuevo formato de archivo, que es más en tiempo real, fácil de transmitir y escribe en el disco en tiempo real. Debido a esto, cuando finaliza la sesión de grabación, la "salida" ya se ha escrito en un archivo. Y no podemos simplemente tirar cualquier "salida" impresa en una terminal, solo podemos eliminar la última, porque podrías tener sesiones de bash anidadas y esta "salida" puede ser información útil para alguien que vea que saliste del shell interno. .

Hay varias posibles soluciones para esto:

  1. al grabar, mantenga el último fotograma en la memoria y escríbalo en el disco cuando llegue el nuevo, lo que lo convierte en un búfer de tamaño de 1 fotograma; la desventaja aquí es que podría causar la pérdida de datos en caso de bloqueo / cierre del terminal (aunque solo 1 fotograma),
  2. después de cerrar el archivo al final de la sesión, podríamos volver a abrirlo y filtrar la "salida" final; tendría que hacerse en forma de transmisión (para no cargar todo en la memoria), de manera similar a la solución 1. ,
  3. filtrarlo en el tiempo de reproducción en lugar de en el tiempo de grabación; esto requeriría alguna forma de lectura anticipada para asciinema play .... en la terminal, pero se puede hacer muy fácilmente en el reproductor web, que almacena toda la grabación en la memoria (eso es una tema, idealmente me gustaría no requerir una grabación completa en los navegadores web mem)

En general, prefiero no modificar los datos de origen al grabar (cambiar texto, cambiar el tiempo, eliminar fotogramas). Eliminar la "salida" final es eliminar datos de la transmisión, sin embargo, no es algo que el usuario realmente desee, así que está bien que me deshaga de ella.

La solución 2. me parece la más simple en este momento.

Gracias por tu explicación.

He visto moldes en los que la gente usa exit sobre CTRL+D y esto está causando que se impriman dos salidas. Sin embargo, espero que este sea un error válido y que alguien lo solucione pronto.

¿Alguna actualización sobre esto? Estoy enfrentando el mismo problema.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

laughedelic picture laughedelic  ·  7Comentarios

pfalcon picture pfalcon  ·  4Comentarios

TyrfingMjolnir picture TyrfingMjolnir  ·  7Comentarios

abaykan picture abaykan  ·  10Comentarios

deeplook picture deeplook  ·  10Comentarios