¿Hay alguna forma de guardar el historial de terminal de un script en un archivo? Sé que puedo hacer esto por Shell > Exportar texto como ... pero ¿hay un comando (Bash) para hacer esto?
¿Hay alguna forma de guardar el historial de terminal de un script en un archivo? Sé que puedo hacer esto por Shell > Exportar texto como ... pero ¿hay un comando (Bash) para hacer esto?
Esto se puede hacer con el comando estándar de Unix script(1)
aunque requiere ejecutar una subshell bajo el shell actual . Es decir, inicie un terminal y ejecute script
, emita los comandos que deban registrarse y salga de ese shell:
$ script
Script started, output file is typescript
$ uptime
11:30 up 22 days, 16:15, 1 user, load averages: 1.43 1.37 1.38
$ exit
Script done, output file is typescript
$
Luego, en el archivo de salida typescript
debería haber un registro de la sesión de shell ejecutada en script(1)
.
Pero espera, hay más! Con expect
, también se puede guardar una sesión y, posiblemente, reproducirla. Esto requiere la instalación de expect
desde un sistema de puertos (Fink, Homebrew o aquí MacPorts) que debe instalar autoexpect
:
$ port installed | grep expect
expect @5.45.3_0 (active)
$ which autoexpect
/opt/local/bin/autoexpect
$ autoexpect $SHELL
autoexpect started, file is script.exp
$ uptime
6:47 up 23 days, 11:32, 1 user, load averages: 1.37 1.39 1.33
$ exit
autoexpect done, file is script.exp
$
Hacer algo útil con script.exp
a su vez probablemente requiere el conocimiento de expect
y TCL, por lo que esta es una opción más avanzada. ( expect
en particular tiene una opción log_file
que se puede activar para guardar todo, pero luego se escribiría todo en TCL y no bash
...)
De lo contrario, el propio terminal debe guardar la sesión; iTerm.app
probablemente tenga más opciones para esto (Sesión - > Log - > Inicio) que Terminal.app
.