Comment enregistrer des commandes de terminal Linux avec un « script »
Les script
La commande vous permet d’enregistrer et de rejouer l’activité dans votre terminal. C’est utile lorsque vous souhaitez créer une référence des étapes que vous avez suivies ou que vous créez un didacticiel à suivre par d’autres.
script
génère un script dactylographié de toutes les commandes que vous avez exécutées. Cela fonctionne en vous déposant dans un sous-shell qui enregistre tout ce que vous exécutez. Votre session sera enregistrée en texte brut lorsque vous quitterez le shell. Cela fait script
plus fiable que les flux d’entrée redirigés.
Sommaire
Utilisation de base
Les script
La commande peut être exécutée sans aucun argument :
script
Une nouvelle session de capture démarre. Votre session de terminal sera enregistrée dans ./typescript
dans votre répertoire de travail. Vous pouvez spécifier un fichier différent en donnant script
une dispute:
script example_session
Utilisez votre shell pour exécuter la séquence de commandes que vous souhaitez enregistrer. Lorsque vous avez terminé, appuyez sur Ctrl+D
ou tapez exit
pour sortir de la sous-shell. Vous retournerez à votre session shell principale.
Vous pouvez maintenant inspecter le journal de session qui a été créé :
cat example_session
Vous verrez la sortie de votre script
session entrecoupée d’annotations entre crochets. Ces annotations sont utilisées par script
pour enregistrer des détails sur le terminal lui-même et les événements qui s’y produisent.
Comme les fichiers journaux sont en texte brut, vous pouvez les manipuler librement dans votre éditeur préféré. Découpez simplement les lignes que vous ne voulez pas conserver ou que les autres ne devraient pas voir.
Ceci est utile si votre session génère par inadvertance des informations potentiellement sensibles ou si vous souhaitez supprimer des caractères superflus du journal. script
enregistre tout ce qui se passe dans votre terminal, y compris les retours arrière, les nouvelles lignes et les caractères de contrôle, dont certains peuvent ne pas être nécessaires dans le texte dactylographié final.
script
émet le nom du fichier dans lequel il écrit au début et à la fin de votre session. Vous pouvez désactiver cette sortie en ajoutant le -q
flag pour activer le mode silencieux.
Les SHELL
La variable d’environnement est lue lors de la détermination du shell à bifurquer pour le processus interne. Lorsque la variable n’est pas définie, script
sera par défaut sh
.
Ajout à un fichier existant
Il est possible d’ajouter de nouvelles commandes à un script dactylographié existant. Cela vous permet de « mettre en pause » et de « reprendre » l’enregistrement en quittant votre sous-shell et en démarrant une nouvelle session.
Ajouter le -a
flag pour ajouter vos commandes au fichier spécifié. script
écrasera le contenu du fichier lorsque le drapeau n’est pas donné.
script -a example_session
Ajout de données de synchronisation
Le tapuscrit de base est idéal lorsque vous souhaitez simplement enregistrer vos pas pour une lecture ou un partage ultérieur. script
peut également enregistrer des données de synchronisation à côté de son journal de texte. Ces informations peuvent être utilisées pour rejouer l’intégralité de votre session de terminal avec des délais appropriés entre les commandes.
Courir script
avec le -t
flag pour spécifier un chemin pour écrire les timings. Les fichiers de synchronisation ont un format à deux colonnes. Chaque entrée contient le temps écoulé depuis le dernier enregistrement dans la première colonne. La deuxième colonne enregistre le nombre de caractères qui ont été saisis, permettant des relectures précises de la vitesse de frappe.
script -q -t example_session_timings example_session
Rejouer les sessions
Les scriptreplay
la commande lit les scripts dactylographiés et les fichiers de synchronisation créés par script
. Il rejoue leur sortie dans votre terminal. Les données de synchronisation seront utilisées pour faire correspondre la durée de chaque caractère tapé à sa longueur dans votre séquence de commandes d’origine.
scriptreplay -t example_session_timings example_session
Certains scripts dactylographiés peuvent contenir des retards indésirables ou fonctionner à une vitesse inconfortablement lente. Utilisez le -d
flag pour accélérer la sortie. Tous les temps enregistrés seront divisés par le nombre que vous passez.
# Run 4 times faster scriptreplay -d 4 -t timings typescript
Vous pouvez également utiliser le -m
flag pour limiter le délai maximum entre les mises à jour individuelles. Cela vous permet de spécifier la plus longue pause autorisée en secondes avant scriptreplay
passera à la commande suivante, même si le texte dactylographié spécifie un délai plus long.
# Maximum delay of 2 seconds scriptreplay -m 2 -t timings typescript
Utilisation avec des commandes interactives
Il n’est pas recommandé d’utiliser script
avec des commandes fortement interactives. Les éditeurs de texte de terminal, les applications basées sur les malédictions et les invites de dialogue sont susceptibles d’insérer des caractères indésirables polluants dans votre script dactylographié. script
se concentre sur la capture d’une sortie textuelle typique, et non sur des commandes qui manipulent votre terminal pour produire une interface graphique.
script
n’est pas adapté à une utilisation avec des coques non interactives car sa coque interne est toujours interactive par nature. La commande ne devrait pas non plus fonctionner avec une entrée canalisée.
Autres options
Les -c
drapeau à script
vous permet de spécifier une commande. Lorsque ce mode est utilisé, script
exécute la commande et capture sa sortie, au lieu de créer un nouveau shell interactif. Cela peut être plus efficace pour capturer la sortie de certains processus qui se comportent différemment lorsqu’ils ne sont pas directement connectés à un TTY.
Les -f
le drapeau indique script
pour écrire directement dans le journal de session après chaque événement. Cela améliore la sécurité en garantissant que la sortie est capturée immédiatement.
Les script
La page de manuel suggère que cet indicateur pourrait également être utilisé pour surveiller le terminal d’un utilisateur en temps réel, comme dans un scénario d’enseignant et d’étudiant. L’étudiant courrait script -f
, alors l’enseignant utiliserait SSH pour se connecter et diffuser le fichier dactylographié en direct.
script
n’accepte généralement pas un lien symbolique comme chemin dactylographié. Les --force
flag active ce comportement, en instruisant script
pour résoudre les liens matériels et mous vers leur destination.
Sommaire
script
vous permet d’enregistrer vos sessions de terminal dans des fichiers texte avec des données de synchronisation précises. Vous pouvez inspecter, partager et imprimer les scripts dactylographiés manuellement, ou les rejouer dans votre terminal en utilisant scriptreplay
.
Les commandes sont incluses avec les distributions Linux les plus populaires. Ils fonctionnent avec tous les types de terminaux, mais les scripts individuels peuvent ne pas être lus correctement dans un terminal différent de celui utilisé pour l’enregistrement. Pour de meilleurs résultats, exécutez scriptreplay
dans le même type de terminal que vous avez utilisé avec script
.