69 - Grabar el terminal
En este episodio del podcast te explico algunas razones para grabar el terminal, y que herramientas tienes disponibles para hacerlo de forma sencilla.
Hasta la fecha no he utilizado ninguna aplicación para grabar el terminal. A lo mejor te preguntas que para que quiero grabar el terminal. La cuestión es que entre artículos, tutoriales, y otras publicaciones en la página web, al final le dedico mucho tiempo a trascribir las instrucciones que utilizo. El problema es que en ocasiones, o me equivocado al hacerlas o bien me olvido de alguna parte. Es posible que tu mismo, en alguna ocasión te hayas puesto en contacto conmigo para corregir algún artículo o tutorial.
Grabar el terminal
¿porque grabar el terminal?
Además de grabar el terminal para poder utilizarlo en tus artículos o publicaciones, también te puede ser interesante hacerlo por otras razones. Así por ejemplo para tomar tus notas de como hacer una determinada instalación. Otra razón podría ser la de llevar un registro de todo lo que realizas en una determinada sesión.
También para hacer demostraciones del funcionamiento de una aplicación o incluso el desarrollo de una aplicación. Una demostración que haciéndola de esta manera estás seguro que no tendrá ningún problema.
Probando diferentes herramientas
Para decidirme por una u otra opción, además de leer sobre cada una de ellas, las he instalado en mi equipo y probado. Sin embargo, en esta ocasión, me he acordado y he utilizado docker
. Ya en el tutorial sobre el terminal recomendé el uso de docker para no teber que preocuparte de lo que haces en el terminal. Como si borras todo el sistema operativo.
En este caso, al probar casi una docena de soluciones, no quería llenar mi recién instalado Ubuntu de archivos que no volvería a utilizar con casi toda probabilidad. Así que he levantado un docker de Ubuntu para realizar allí todas las pruebas. Es una solución realmente cómoda y sobre todo sencilla. De esta manera una vez has terminado, tan solo tienes que borrar imágenes y contendores y punto pelota.
En los siguientes apartados encontrarás una descripción de las diferentes herramientas que he probado. Además de la descripción he incluido como instalarla, y unas instrucciones básicas para su uso.
script
script es la herramienta de referencia a la hora de grabar sesiones de terminal. Viene instalado por defecto en la mayoría de distribuciones, y es tremendamente sencillo de utilizar.
El uso es muy sencillo, tan solo tienes que ejecutar script
y comenzará a grabar. Todo se graba en un archivo llamado typescript
. Pero puedes grabar en cualquier otro archivo, ejecutando para ello script grabacion.txt
, por ejemplo. Tienes algunas opciones interesantes, como
-a
para añadir a un arhivo anterior-o
te permite limitar el archivo de salida-t
guarda la información de tiempos en un archivo
Para salir tienes que utilizar el atajo de teclado Ctrl+D
Para reproducir tienes que utilizar la herramienta scriptreplay
, que te permite reproducir lo que has grabado previamente utilizando para ello la información de tiempos. Pero además tiene algunas opciones muy interesantes para mejorar la reproducción, como son,
-d
permite aumentar la velocidad de reproducción-m
te permite configurar el tiempo máximo de espera
asciinema
asciinema te permite no solo grabar tus sesiones con el terminal, sino, además compartirlas con otros usuarios.
Respecto al funcionamiento de esta herramienta indicarte que funciona como un pseudo-terminal
de forma que lo que tu escribes no lo estás haciendo directamente en el terminal. Primero va a asciinema
y esto luego lo manda al shell
.
Por otro lado, asciinema
guarda en bruto todo lo que se produce en el terminal. Tanto el texto como las secuencias de control. Así, cuando reproduces una grabación, no es vía imprimir directamente lo que se ha guardado, sino que se debe interpretar.
Instalación
asciinema se encuentra en los repositorios oficiales de Debian, Ubuntu, Raspbian, etc, con lo que la instalación es tan sencilla como, ejecutar la siguiente instrucción en un terminal,
sudo apt install asciinema
Uso y funcionamiento
El uso es muy sencillo. Así tienes las siguientes opciones a utilizar,
rec
para grabar. Tan sencillo comoasciinema rec grabacion.cast
.play
para reproducir. Indicar que tiene dos opciones interesantes para modificar la reproducción. Por un lado-i
que te permite definir el máximo tiempo de inactividad en segundos. Por otro lado tienes también la opción de definir la velocidad de reproducción. Es tan sencillo de usar comoasciinema play grabacion.cast
.cat
muestra todo lo que se ha grabado directamente en el terminal. Por supuesto lo puedes guardar directamente en un archivo de texto conasciinema cat grabacion.cast > grabacion.txt
.
Además asciinema tiene asociado un servicio en la nube, donde puedes subir tus grabaciones, no solo para compartirlas con otros, sino también para reproducirlas directamente allí.
Además también existen otras herramientas que te permitirán guardar tu grabación en otros formatos. Algunas opciones son asciicast2gif para guardar como imagen Gif
o asciicast-to-svg. O incluso que termosvg
sobre el que comentaré mas adelante.
termosvg
termosvg es una herramienta implementada en Python que te permite grabar todo lo que sucede en tu terminal y guardarlo como una animación SVG. Puedes ver algunos ejemplos de las animaciones que se pueden obtener.
La ventaja de esta aplicación es que el resultado generado es una animación que puedes insertar en cualquier página.
Además admite plantillas, lo que facilita la personalización de colores, el aspecto del terminal y el control de las animaciones.
Por último es compatible con el formato de grabación de asciinema, que te he comentado anteriormente. Lo cual es realmente interesante, porque te permite hacer tu grabación en texto, para posteriormente pasarla a SVG. De esta forma tienes lo mejor de los dos mundos.
Instalación
La instalación la tienes que realizar a través de pip3
, porque no existe paquete disponible para Ubuntu. Pero es igual de sencillo que en otras ocasiones.
sudo apt install python3-pip
sudo pip3 install pyte python-xlib svgwrite
sudo pip3 install termtosvg
Con la primera línea instalas pip3
, en el caso que no lo tengas instalado. Con la segunda línea instalas las dependencias para el correcto funcionamiento de esta herramienta.Y finalmente, con la tercera línea instalas la aplicación necesaria.
Uso y funcionamiento
Como el resto de herramientas que has visto hasta el momento, termtosvg
es muy sencilla de utilizar. Así, para grabar un terminal tan solo tienes que ejecutar la siguiente instrucción,
termtosvg animacion.svg
En el caso de que quisieras utilizar una plantilla
termtosvg -t ~/plantillas/plantilla.svg
Pero tal y como te he comentado anteriormente, esta herramienta te permite grabar en formato asciinema
. Esto es tan sencillo como
termtosvg record grabacion.cast
En el caso de que posteriormente lo quisieras transformar en una animación,
termtosvg render grabacion.cast animacion.svg
Por supuesto es posible configurar mediante parámetros determinados aspectos de la grabación. Así puedes definir la máxima o mínima duración de un frame, la geometría, la plantilla, y mucho mas.
showterm
showterm se trata de una herramienta un tanto curiosa, porque lo que hace es graba una sesión y la sube directamente a internet, indicándote la dirección donde puedes consultarla. Eso si, no puedes editarla
Instalación
sudo apt install rubygems
sudo gem install showterm
Uso
Para grabar, simplemente tienes que ejecutar la sigueinte instrucción,
showterm
ttyrec
Se trata de una aplicación derivada de script
. Se encuentra en los repositorios oficiales de Ubuntu.
Uso ttyrec
te permite grabar todo lo que sucede en el terminal. Para detener la grabación utilizar el atajo de teclado Ctrl+D
.
Para reproducir lo que has grabado ttplay
mas algunas opciones, como puede ser -s2
para reproducir a doble de velocidad. Pero también mientras estás reproduciendo puedes aumentar o disminuir la velocidad de reproducción utilizando las teclas +
y -
respectivamente.
shelr
shelr es una herramienta te permite grabar y reproducir todo lo que haces en el terminal. No solo esto, si no que además te permite publicarlo. Es una aplicación implementada en Ruby y el paquete está disponible para la mayoría de las distribuciones linux. No solo esto sino que también la tienes disponible para MacOSX
Instalación
shelr
se encuentra en los repositorios oficiales de Ubuntu. Incluso existe una PPA desde donde descargarte la última versión. Así, para instalarla tan solo tienes que ejecutar,
sudo apt install shelr
Uso
Para grabar
shelr record
Para ver todas las grabaciones que tienes disponibles
shelr list
Para reproducir la última grabación
shelr play last
Terminalizer
terminalizer es una herramienta con la que grabar tu terminal y generar gif animados. Se trata de una herramienta altamente personalizable y multipltaforma. Permite configurar tanto las fuentes coleres y estilos mediante CSS.
Instalación
npm install -g terminalizer
Utilización
Para grabar,
terminalizer record <nombre-de-la-grabación>
Para reproducir
terminalizer play <nombre-de-la-grabación>
Para crear tu propio gif animado
terminalizer render demo
El problema es que utiliza una librería externa para crear el gif animado. Pero tiene algunas características interesantes como,
- puedes definir la calidad de la imagen renderizada
- es posible reducir el número de frames
- puedes configurar la velocidad de grabación y reproducción
ttystudio
ttystudio Aplicación implementada en Node.js que te permite grabar el terminar y guardarlo con formato GIF o APNG. Tiene la ventaja de que no necesita de dependencias externas.
Instalación
npm install -g ttystudio
Utilización
ttystudio output.gif
Para terminar la grabación solo tienes que utilizar el atajo de teclado Ctrl+Q
.
Termrecord
Instalación
TermRecord, como todas las herramientas que te he comentado hasta el momento, se trata de una herramienta super simple que te permite grabar el terminal. Sin embargo, la diferencia respectoa a otras es que lo guarda directamente en HTML
Esta aplicación utiliza script junto con la información relativa al tiempo y crea una página web autocontenida que te permite reproducir de forma sencilla la sesión que has grabado, sin necesidad de cargar nada mas.
A efectos demostrativos es perfecta. De esta manera te evitas que durante la demostración haya algún error. Cosa que como sabes sucede de forma habitual.
Instalación
sudo apt install python-pip
sudo pip install TermRecord
Utilización
Tan sencillo como ejecutar la siguiente instrucción
TermRecord -o sesion.html
Conclusión
Como te he comentado en el podcast, yo me he decantado por asciinema
. Pero te recomiendo que las pruebes, para sacar tus propias conclusiones. Igualmente, te recomiendo que estas pruebas las hagas con docker
para evitar llenar tu equipo de aplicaciones que nunca utilizarás.
Más informacion,