Grabar las sesiones de tu terminal en Linux con script

script

Script es una utilidad de Unix presente en la mayoría de distribuciones GNU/Linux, que nos permite grabar todas las operaciones ejecutadas en la terminal. Va más allá de lo que ofrece el comando history, ya que también nos proporciona todas las salidas de los diferentes comandos y operaciones que realicemos.

La forma más sencilla de iniciarlo es abrir una terminal y escribir

script

que automáticamente nos crea un fichero llamado typescript y empieza a grabar el contenido de la sesión, con los diversos comandos que vayamos ejecutando.

Podemos parar esa captura en cualquier momento, haciendo Crlt+D o escribiendo

exit

script2

Si no nos gusta ese nombre de typescript o queremos diferenciar entre sesiones le podemos dar otro cualquiera. Por ej

script registro.txt

Por defecto cada vez que ejecutamos el comando si tenemos un archivo de logs anterior con el mismo nombre lo sobreescribe. Pero tenemos la opción de utilizar el parámetro -a para anexar nuevo contenido a dicho archivo (en este caso, al archivo por defecto typescript) y evitar borrar el viejo.

script -a

Como habréis deducido el archivo resultante lo podemos examinar con cualquier editor de texto (geany, gedit, nano, kate, etc.), pero vamos a ir un poco más allá y ver como examinarlo desde la terminal a la velocidad de ejecución original.

Primero lanzamos el programa, añadiéndole ahora un nuevo elemento: un archivo que nos marca los tiempos de script.

Utilizando el archivo por defecto typescript ejecutaríamos

script -t=tiempo.txt

Si utilizamos un nombre de archivo diferente al predeterminado typescript, quedaría algo así:

script -t=tiempo.txt registro.txt

en cualquiera de los dos caso para finalizar la grabación hacemos Ctrl + D o escribimos:

exit

Ahora llega la parte más divertida, la de reproducir el archivo desde la shell con el comando scriptreplay:

scriptreplay -t=tiempo.txt

script

De nuevo retomando el ejemplo anterior (registro.txt), si utilizáis un fichero diferente a typescript varía ligeramente la sintaxis:

scriptreplay -t=tiempo.txt registro.txt

Otros programas interesantes a la hora de guardar y reproducir sesiones de terminal –especialmente si os apetece compartir vuestro trabajo– son asciinema o Termrecord, que crean archivos html que se pueden incrustar en páginas web.

4 thoughts on “Grabar las sesiones de tu terminal en Linux con script”

  1. Abel Puertas says:

    Magnífica tip!
    No lo conocía y me va a ir de lujo, muchas gracias!

    Sólo una cosa, el signo del igual (-t=tiempo.txt) creo que sobra.
    Lo he usado y me ha creado el fichero “=tiempo.txt”.
    Parece que sería más bien: “-ttiempo.txt”

    Al menos en la versión que tengo instalada en mi LinuxMint 17.3:
    $ script –version
    script de util-linux 2.20.1

    Saludos!

    1. tannhausser says:

      Gracias a ti Abel, por pasarte y comentar!

      Y si! tienes razón! el signo igual no es imprescindible se puede poner todo junto.

      Un Saludo!

  2. victorhck says:

    anda que bueno!!! 🙂
    MUY interesante!!

    1. tannhausser says:

      gracias colega!

Deja un comentario