Cómo grabar comandos de terminal de Linux con «script»

Contenidos

Ilustración que muestra una pantalla de terminal Linux

los script mando le posibilita grabar y reproducir la actividad en su terminal. Es útil cuando desea crear una referencia de los pasos que tomó o está creando un tutorial para que otros lo sigan.

script genera un texto mecanografiado de todos los comandos que ha ejecutado. Funciona colocándote en un sub-shell que registra todo lo que ejecutas. Su sesión se guardará como texto sin formato cuando salga del shell. Esto hace script más confiable que los flujos de entrada redirigidos.

Uso básico

los script El comando se puede ejecutar sin ningún argumento:

script

Comenzará una nueva sesión de captura. Su sesión de terminal se guardará en ./typescript en su directorio de trabajo. Puede especificar un archivo distinto dando script un argumento:

script example_session

Utilice su shell para ejecutar la secuencia de comandos que desea grabar. Cuando finalices, presiona Ctrl+D o escriba exit para salir del sub-shell. Volverá a su sesión de shell principal.

Ahora puede inspeccionar el registro de sesión que se ha creado:

cat example_session

Verá la salida de su script sesión intercalada con anotaciones entre corchetes. Estas anotaciones son utilizadas por script para registrar detalles sobre la propia terminal y los eventos que ocurren dentro de ella.

Como los archivos de registro son texto sin formato, puede manipularlos libremente en su editor favorito. Simplemente corte las líneas que no desee retener o que otros no deberían ver.

Esto es útil si su sesión genera inadvertidamente información potencialmente sensible o si desea borrar caracteres extraños del registro. script registra todo lo que sucede en su terminal, incluidas las pulsaciones de retroceso, nuevas líneas y caracteres de control, algunos de los cuales pueden no ser necesarios en el texto mecanografiado final.

script emite el nombre del archivo en el que está escribiendo al inicio y al final de su sesión. Puede deshabilitar esta salida agregando el -q bandera para habilitar el modo silencioso.

los SHELL La variable de entorno se lee al determinar el shell a bifurcar para el procedimiento interno. Cuando la variable no está configurada, script por defecto a sh.

Agregar a un archivo existente

Es factible agregar nuevos comandos a un texto mecanografiado existente. Esto le posibilita «pausar» y «reanudar» la grabación saliendo de su sub-shell e iniciando una nueva sesión.

Añade el -a flag para agregar sus comandos al archivo especificado. script sobrescribirá el contenido del archivo cuando no se proporcione la bandera.

script -a example_session

Agregar datos de tiempo

El texto mecanografiado básico es ideal cuando simplemente desea registrar sus pasos para leerlos o compartirlos más tarde. script además puede guardar datos de tiempo junto con su registro de texto. Esta información se puede usar para reproducir toda su sesión de terminal con los retrasos adecuados entre los comandos.

Correr script con el -t marca para especificar una ruta para escribir tiempos. Los archivos de tiempo disponen un formato de dos columnas. Cada entrada contiene el tiempo transcurrido desde el último registro en la primera columna. La segunda columna registra la cantidad de caracteres que se escribieron, lo que posibilita repeticiones con velocidad de escritura precisa.

script -q -t example_session_timings example_session

Reproducir sesiones

los scriptreplay comando lee mecanografiados y archivos de tiempo creados por script. Reproduce su salida en su terminal. Los datos de tiempo se utilizarán para hacer coincidir la extensión de cada carácter escrito con su longitud en su secuencia de comando original.

scriptreplay -t example_session_timings example_session

Algunos scripts pueden contener retrasos no deseados o ejecutarse a una velocidad incómodamente lenta. Usar el -d bandera para acelerar la salida. Todos los tiempos registrados se dividirán por el número que pase.

# Run 4 times faster
scriptreplay -d 4 -t timings typescript

Además puede usar el -m marca para limitar el retraso máximo entre actualizaciones individuales. Esto le posibilita especificar la pausa más larga permitida en segundos antes scriptreplay pasará al siguiente comando, inclusive si el texto mecanografiado especifica un retraso mayor.

# Maximum delay of 2 seconds
scriptreplay -m 2 -t timings typescript

Uso con comandos interactivos

No se recomienda utilizar script con comandos muy interactivos. Es probable que los editores de texto de terminal, las aplicaciones sustentadas en maldiciones y los mensajes de diálogo inserten caracteres basura contaminantes en su texto mecanografiado. script se centra en capturar la salida típica basada en texto, no en comandos que manipulan su terminal para producir una interfaz gráfica.

script no es adecuado para su uso con shells no interactivos dado que su shell interno es siempre interactivo por naturaleza. El comando no debería ser se espera que funcione con entrada canalizada.

Otras opciones

los -c bandera a script le posibilita especificar un comando. Cuando se utiliza este modo, script ejecuta el comando y captura su salida, en lugar de bifurcar un nuevo shell interactivo. Esto puede ser más efectivo para capturar la salida de algunos procesos que se comportan de manera distinto cuando no están conectados de forma directa a un TTY.

los -f bandera instruye script para escribir de forma directa en el registro de sesión después de cada evento. Esto mejora la seguridad al garantizar que la salida se capture de inmediato.

los script página de manual sugiere esta bandera además podría usarse para monitorear el terminal de un usuario en tiempo real, como en un escenario de profesor y estudiante. El estudiante correría script -f, posteriormente el maestro usaría SSH para conectarse y transmitir el archivo mecanografiado en vivo.

script no suele aceptar un link simbólico como una ruta mecanografiada. los --force bandera habilita esta conducta, instruyendo script para solucionar links duros y blandos a su destino.

Resumen

script le posibilita grabar sus sesiones de terminal en archivos de texto sin formato con datos de tiempo precisos. Puede inspeccionar, compartir e imprimir los guiones mecanografiados manualmente o reproducirlos en su terminal usando scriptreplay.

Los comandos se incluyen con las distribuciones de Linux más populares. Funcionan con todos los tipos de terminales, pero es factible que los scripts individuales no se reproduzcan correctamente en un terminal distinto al que se utiliza para la grabación. Para obtener mejores resultados, ejecute scriptreplay en el mismo tipo de terminal que utilizaste con script.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.