Hoe Linux Terminal-opdrachten op te nemen met “script”

0
187
fatmawati achmad zaenuri

Met de scriptopdracht kunt u activiteiten in uw terminal opnemen en opnieuw afspelen. Het is handig als je een referentie wilt maken van de stappen die je hebt genomen of als je een zelfstudie aan het maken bent die anderen kunnen volgen.

script voert een typoscript uit van alle opdrachten die u hebt uitgevoerd. Het werkt door je in een sub-shell te laten vallen die alles registreert wat je uitvoert. Uw sessie wordt opgeslagen als platte tekst wanneer u de shell verlaat. Dit maakt script betrouwbaarder dan omgeleide invoerstromen.

Basisgebruik

Het scriptcommando kan zonder argumenten worden uitgevoerd:

script

Er wordt een nieuwe opnamesessie gestart. Uw terminalsessie wordt opgeslagen in ./typescript in uw werkmap. U kunt een ander bestand specificeren door script een argument te geven:

script example_session

Gebruik je shell om de opdrachtreeks uit te voeren die je wilt opnemen. Als je klaar bent, druk je op Ctrl+D of typ je exit om uit de sub-shell te vallen. U keert terug naar uw hoofdshell-sessie.

Nu kunt u het gemaakte sessielogboek inspecteren:

cat example_session Advertisement

You&#8217 U ziet de uitvoer van uw scriptsessie afgewisseld met annotaties tussen vierkante haken. Deze annotaties worden door scripts gebruikt om details over de terminal zelf en de gebeurtenissen die daarin plaatsvinden vast te leggen.

Aangezien logbestanden platte tekst zijn, kunt u ze vrij manipuleren in uw favoriete editor. Knip eenvoudig alle regels uit die u niet wilt behouden of die anderen niet zouden moeten zien.

Dit is handig als uw sessie per ongeluk mogelijk gevoelige informatie uitvoert of als u vreemde tekens wilt verwijderen uit het logboek. script registreert alles wat er in uw terminal gebeurt, inclusief backspace-persen, nieuwe regels en controletekens, waarvan sommige misschien niet nodig zijn in het uiteindelijke typescript.

script zendt de naam uit van het bestand waarnaar het schrijft aan het begin en einde van uw sessie. U kunt deze uitvoer uitschakelen door de vlag -q toe te voegen om de stille modus in te schakelen.

De omgevingsvariabele SHELL wordt gelezen bij het bepalen van de shell die moet worden gevorkt voor het innerlijke proces. Als de variabele niet is ingesteld, wordt het script standaard sh.

Toevoegen aan een bestaand bestand

Het is mogelijk om nieuwe commando's toe te voegen aan een bestaand typescript. Hiermee kunt u “pauzeren” en “hervatten” opnemen door uw sub-shell te verlaten en een nieuwe sessie te starten.

Advertentie

Voeg de vlag -a toe om uw opdrachten aan het opgegeven bestand toe te voegen. script zal de inhoud van het bestand overschrijven als de vlag niet wordt gegeven.

script -a example_session

Tijdgegevens toevoegen

Het basistypescript is ideaal wanneer u gewoon uw stappen wilt vastleggen om later te lezen of te delen. script kan naast het tekstlogboek ook timinggegevens opslaan. Deze informatie kan worden gebruikt om je hele terminalsessie opnieuw af te spelen met de juiste vertragingen tussen de opdrachten.

Voer een script uit met de vlag -t om een ​​pad op te geven waarnaar timings moeten worden geschreven. Timingbestanden hebben een indeling met twee kolommen. Elke invoer bevat de verstreken tijd sinds de laatste record in de eerste kolom. De tweede kolom registreert het aantal tekens dat is getypt, waardoor nauwkeurige herhalingen van de typsnelheid mogelijk zijn.

script -q -t example_session_timings example_session

Sessies opnieuw afspelen

De opdracht scriptreplay leest typescripts en timingbestanden die door het script zijn gemaakt. Het speelt hun uitvoer opnieuw af in uw terminal. De timinggegevens worden gebruikt om de duur van elk getypt teken af ​​te stemmen op de lengte in uw oorspronkelijke opdrachtreeks.

scriptreplay -t example_session_timings example_session

Sommige typescripts kunnen ongewenste vertragingen bevatten of op een onaangenaam lage snelheid worden uitgevoerd. Gebruik de vlag -d om de uitvoer te versnellen. Alle opgenomen timings worden gedeeld door het nummer dat u passeert.

# Voer 4 keer sneller scriptreplay uit -d 4 -t timings typscript

U kunt ook de vlag -m gebruiken om de maximale vertraging tussen afzonderlijke updates te beperken. Hiermee kunt u de langst toegestane pauze in seconden specificeren voordat scriptreplay naar de volgende opdracht gaat, zelfs als het typescript een langere vertraging specificeert.

# Maximale vertraging van 2 seconden scriptreplay -m 2 -t timings typescript

Gebruik met interactieve commando's

Het wordt niet aanbevolen om scripts te gebruiken met zeer interactieve opdrachten. Terminal-teksteditors, op vloeken gebaseerde toepassingen en dialoogprompts zullen waarschijnlijk vervuilende tekens in uw typoscript invoegen. script richt zich op het vastleggen van typische op tekst gebaseerde uitvoer, niet op commando's die uw terminal manipuleren om een ​​grafische interface te produceren.

Advertentie

script is niet geschikt voor gebruik met niet-interactieve shells als zijn innerlijke shell is altijd interactief van aard. Het commando zou ook niet moeten werken met doorgesluisde invoer.

Andere opties

De vlag -c naar script laat je een commando specificeren. Wanneer deze modus wordt gebruikt, voert het script het commando uit en legt het de uitvoer vast, in plaats van een nieuwe interactieve shell te forken. Dit kan effectiever zijn bij het vastleggen van uitvoer van sommige processen die zich anders gedragen wanneer ze niet rechtstreeks zijn verbonden met een TTY.

De -f vlag instrueert het script om na elke gebeurtenis rechtstreeks naar het sessielogboek te schrijven. Dit verbetert de veiligheid door ervoor te zorgen dat de output meteen wordt vastgelegd.

De handleidingpagina van het script suggereert dat deze vlag ook kan worden gebruikt om de terminal van een gebruiker in realtime te bewaken, zoals in een scenario voor docenten en studenten. De student zou script -f uitvoeren, waarna de leraar SSH zou gebruiken om verbinding te maken en het getypte bestand live te streamen.

script accepteert gewoonlijk geen symbolische link als een typoscript-pad. De –force vlag maakt dit gedrag mogelijk en geeft het script de opdracht om harde en zachte links naar hun bestemming op te lossen.

Samenvatting

script laat je je terminalsessies opnemen naar normaal tekstbestanden met nauwkeurige timinggegevens. Je kunt de typescripts handmatig inspecteren, delen en afdrukken, of ze in je terminal afspelen met scriptreplay.

Advertentie

De commando's worden meegeleverd met de meeste populaire Linux-distributies. Ze werken met alle terminaltypes, maar individuele typescripts worden mogelijk niet correct afgespeeld in een terminal die verschilt van de terminal die wordt gebruikt voor opname. Voor de beste resultaten voert u scriptreplay uit in hetzelfde terminaltype dat u met script hebt gebruikt.