El comando script es una utilidad Unix que registra una sesión de terminal . Se remonta a 1979 3.0 Berkeley Software Distribution (BSD). [1]
Una sesión de script se captura en el nombre del archivo typescript
de forma predeterminada; para especificar un nombre de archivo diferente, siga el script
comando con un espacio y el nombre del archivo como tal: script recorded_session
.
El formato grabado script
consta de información de tiempo en texto plano (para toda la sesión) y salida de comando palabra por palabra, incluido cualquier código de escape ANSI que el programa haya impreso para formatear. Utiliza un pseudoterminal para este propósito, por lo que los programas actúan exactamente como si estuvieran en un terminal. [1] El comando util-linux scriptreplay
ofrece una función de reproducción para su script, que admite el uso de un archivo de tiempo adicional para información a nivel de carácter. [2] [3] Algunos servicios en línea, como el ya desaparecido shelr.tv, también pueden mostrar el formato como una alternativa de bajo ancho de banda a los screencasts de vídeo. [4]
Uno de los problemas con el comando script es que sólo permite el registro de un proceso hijo; y, a menudo, es necesario registrar el comando en el proceso actual sin generar un nuevo proceso, como cuando se necesita la automatización de un script que puede registrar su propia salida. Los sistemas operativos Unix hacen esto posible mediante el uso de canalizaciones y redirecciones. Considere los siguientes ejemplos de modelos:
Bourne shell Todos los shells relacionados con Bourne shell ( sh
), por ejemplo: Thompson shell ( sh
), Bash ( bash
), KornShell ( ksh
), Z shell ( zsh
), permiten que stdout y stderr se conecten a una canalización con nombre y se redirijan al comando tee. , Por ejemplo:
NOMBRE DE REGISTRO = "script"
rm -f $NOMBRE DE REGISTRO .p $NOMBRE DE REGISTRO .log mknod $LOGNAME .p p
tee < $LOGNAME .p $LOGNAME .log & exec > $LOGNAME .p 2 > & 1
El script anterior registra script.log
todos los resultados del exec
comando. Sin embargo, algunos programas interactivos (como Python ) no repiten su entrada estándar cuando se ejecutan bajo el shell resultante, aunque sí lo hacen cuando se ejecutan bajo el comando script, nuevamente debido a la detección de una terminal.
El programa ttyrec del año 2000 proporciona el mismo tipo de funcionalidad y ofrece varios enlaces. El tiempo es similar al de util-linux. Una versión más moderna del concepto es JSON "asciicast" , utilizado por asciinema. [5]