Als je een aantal opdrachten in een shell intypt en de uitvoer daarvan wilt bijhouden voor latere analyse, dan kun je natuurlijk shell redirection gebruiken om de uitvoer naar een bestand te schrijven. Gebruik je tee, dan blijf je tegelijk ook de uitvoer in je shell zien. Er is echter een eenvoudiger manier om de hele invoer, uitvoer en foutenuitvoer van een shell-sessie naar een bestand te schrijven:

script sessie.log

Dit voert een subshell uit (degene die in de omgevingsvariabele $SHELL gedefinieerd is), en wanneer je de shell verlaat met exit of CTRL+D, vind je een kopie van je volledige interactie met de shell in het bestand sessie.log.

Wanneer je het uitvoerbestand met cat bekijkt, zul je daar niet veel bijzonders aan zien, behalve dat ook je opdrachtprompt in de uitvoer wordt getoond. Maar als je het opent in een editor, merk je dat er heel wat 'control characters' in de uitvoer staan, waaronder ook backspace en enter. Het programma script neemt immers elk teken dat je intypt real-time op. Wil je deze control characters uit het bestand halen, dan kun je het volgende Perl-script gebruiken:

cat sessie.log | \

perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' |\

col -b > sessie_opgekuist.log

Deel je sessie

De Linux-versie van script heeft nog een handige extra functie: met de optie -f wordt de uitvoer geflusht na elke lees- of schrijfopdracht. Hierdoor kun je ervoor zorgen dat iemand anders real-time met je mee kan kijken terwijl je opdrachten in je shell intypt. Voer het volgende uit:

mkfifo sessie; script -f sessie

En laat terwijl je opdrachten in je shell-sessie uitvoert nu de andere persoon op dezelfde computer (bijvoorbeeld ingelogd via ssh) meekijken met:

cat sessie

Replays

Een andere handige functie van de Linux-versie van script is de replay. Save daarvoor de timing-informatie van je sessie met de optie -t in een afzonderlijk bestand:

script -t 2>sessie.timing sessie.log

En dan kun je later met het programma scriptreplay een replay van de sessie bekijken die even veel tijd in beslag neemt als de originele sessie:

scriptreplay sessie.timing sessie.log

Een script replay is hierdoor ideaal om tijdens een presentatie te illustreren hoe je een bepaalde taak uitvoert: neem de sessie van tevoren op en speel ze tijdens je presentatie af, waardoor je je kunt focussen op je uitleg.

Bron: Techworld