C'è un modo per salvare la cronologia del terminale di uno script da archiviare? So che posso farlo con Shell > Esporta testo come ... ma c'è un comando (Bash) per fare questo?
Questo può essere fatto con il comando standard unix script(1)
sebbene richieda l'esecuzione di una sotto-shell sotto la shell corrente . Cioè, avvia un terminale ed esegui script
, emetti i comandi che devono essere registrati, quindi esci da quella 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
$
Quindi nel file output% co_de ci dovrebbe essere un record della sessione della shell eseguita sotto typescript
.
Ma aspetta, c'è dell'altro! Con script(1)
si può anche salvare una sessione ed eventualmente riprodurla. Ciò richiede l'installazione di expect
da un sistema di porte (Fink, Homebrew o qui MacPorts) che dovrebbe installare expect
:
$ 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
$
Fare qualcosa di utile con autoexpect
a sua volta richiede probabilmente la conoscenza di script.exp
e TCL, quindi questa è un'opzione più avanzata. ( expect
in particolare ha un'opzione expect
che può essere attivata per salvare tutto, ma poi dovresti scrivere tutto in TCL e non log_file
...)
Altrimenti il terminale stesso deve salvare la sessione; bash
probabilmente ha più opzioni per questo (Session - > Log - > Start) di iTerm.app
.