¿Hay alguna forma de guardar el historial de terminal de un script en un archivo? Sé que puedo hacerlo mediante Shell > Exportar texto como... pero ¿hay algún comando (Bash) para hacerlo?
Respuesta
¿Demasiados anuncios?Esto se puede hacer con el comando estándar de unix script(1)
aunque requiere la ejecución de un subshell bajo el shell actual. Es decir, inicie un terminal y ejecute script
, emite los comandos que deban ser registrados, y luego sale 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
$
Entonces en la salida typescript
debería haber un registro de la sesión de shell ejecutada bajo script(1)
.
Pero espera, ¡hay más! Con expect
también se puede guardar una sesión y posiblemente repetirla. Para ello es necesario instalar expect
desde un sistema de puertos (Fink, Homebrew, o aquí MacPorts) que debería 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 requiere probablemente el conocimiento de expect
y TCL, por lo que es una opción más avanzada. ( expect
en particular tiene un log_file
que se puede activar para guardar todo, pero entonces estarías escribiendo todo en TCL y no bash
...)
En caso contrario, el propio terminal debe guardar la sesión; iTerm.app
probablemente tiene más opciones para esto (Sesión -> Registro -> Inicio) que Terminal.app
.
0 votos
¿Cuál es el historial de terminales de un script? ¿Es la salida? ¿Redirigirla a un archivo con
my_script > output.txt
¿será suficiente?0 votos
@patrix Mi script tiene un menú principal. Si el usuario introduce alguna opción, produce una salida. Me gustaría incluir una opción en el menú principal que guarde lo que sea que esté en pantalla en un archivo de texto, quise decir. Espero que eso lo aclare.
0 votos
@patrix Básicamente, la sesión actual.
0 votos
"Sesión", "historial" y "contenido de la pantalla actual" son tres cosas diferentes. Si quiere tener lo mismo que la función Exportar texto como, es definitivamente más de lo que hay en la pantalla :-)