Existe-t-il un moyen de sauvegarder l'historique du terminal d'un script dans un fichier? Je sais que je peux le faire par Shell > Export Text As... mais existe-t-il une commande (Bash) pour le faire?
Réponse
Trop de publicités?Cela peut être fait avec la commande Unix standard script(1)
même si cela nécessite d'exécuter un sous-shell sous le shell actuel. Autrement dit, ouvrez un terminal et exécutez script
, saisissez les commandes à enregistrer, puis quittez ce 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
$
Ensuite, dans le fichier de sortie typescript
, il devrait y avoir un enregistrement de la session du shell exécutée sous script(1)
.
Mais attendez, il y a plus ! Avec expect
, on peut également enregistrer une session et éventuellement la rejouer. Cela nécessite d'installer expect
à partir d'un système de ports (Fink, Homebrew, ou ici MacPorts) qui devrait installer 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
$
Faire quelque chose d'utile avec script.exp
nécessite probablement des connaissances en expect
et en TCL, donc il s'agit d'une option plus avancée. (expect
en particulier possède une option log_file
qui peut être activée pour tout sauvegarder, mais alors vous écririez tout en TCL et non en bash
...)
Autrement, le terminal lui-même doit enregistrer la session ; iTerm.app
a probablement plus d'options pour cela (Session -> Log -> Start) que Terminal.app
.
0 votes
Quel est l'historique de terminal d'un script? Sa sortie? Est-ce suffisant de le rediriger vers un fichier avec
mon_script > sortie.txt
?0 votes
@patrix Mon script a un menu principal. Si l'utilisateur entre une option, cela produit une sortie. J'aimerais inclure une option dans le menu principal qui enregistre tout ce qui est à l'écran dans un fichier texte, je voulais dire. J'espère que c'est plus clair!
0 votes
@patrix Fondamentalement, la session en cours.
0 votes
"Session", "historique" et "contenu de l'écran actuel" sont trois choses différentes. Si vous voulez avoir la même fonctionnalité que l'exportation de texte, c'est certainement plus que ce qui est affiché à l'écran :-)