Come registrare i comandi del terminale Linux con “script”

0
198
fatmawati achmad zaenuri

Il comando script ti consente di registrare e riprodurre l'attività nel tuo terminale. È utile quando vuoi creare un riferimento ai passaggi che hai eseguito o stai creando un tutorial che gli altri possono seguire.

script emette un dattiloscritto di tutti i comandi che hai eseguito. Funziona facendoti cadere in una sotto-shell che registra tutto ciò che esegui. La tua sessione verrà salvata come testo normale quando esci dalla shell. Ciò rende lo script più affidabile rispetto ai flussi di input reindirizzati.

Utilizzo di base

Il comando script può essere eseguito senza alcun argomento:

script

Inizierà una nuova sessione di acquisizione. La tua sessione del terminale verrà salvata in ./typescript nella tua directory di lavoro. Puoi specificare un file diverso dando allo script un argomento:

script example_session

Usa la tua shell per eseguire la sequenza di comandi che vuoi registrare. Quando hai finito, premi Ctrl+D o digita exit per uscire dalla sub-shell. Tornerai alla tua sessione principale della shell.

Ora puoi controllare il log della sessione che è stato creato:

cat example_session Advertisement

Tu&#8217 ;vedrai l'output della tua sessione di script intervallato da annotazioni tra parentesi quadre. Queste annotazioni vengono utilizzate dallo script per registrare dettagli sul terminale stesso e sugli eventi che si verificano al suo interno.

Poiché i file di registro sono di testo semplice, puoi manipolarli liberamente nel tuo editor preferito. Ritaglia semplicemente le righe che non vuoi conservare o che gli altri non dovrebbero vedere.

Questo è utile se la tua sessione emette inavvertitamente informazioni potenzialmente sensibili o se vuoi tagliare caratteri estranei da il ceppo. lo script registra tutto ciò che accade nel tuo terminale, comprese le pressioni backspace, le nuove righe e i caratteri di controllo, alcuni dei quali potrebbero non essere necessari nel dattiloscritto finale.

script emette il nome del file su cui sta scrivendo all'inizio e alla fine della sessione. Puoi disabilitare questo output aggiungendo il flag -q per abilitare la modalità silenziosa.

La variabile d'ambiente SHELL viene letta quando si determina la shell da biforcare per il processo interno. Quando la variabile’non è impostata, lo script sarà predefinito su sh.

Aggiunta a un file esistente

È possibile aggiungere nuovi comandi a un dattiloscritto esistente. Ciò ti consente di “mettere in pausa” e “riprendi” registrazione uscendo dalla sub-shell e avviando una nuova sessione.

Annuncio

Aggiungi il flag -a per aggiungere i comandi al file specificato. lo script sovrascriverà il contenuto del file quando il flag non viene fornito.

script -a example_session

Aggiunta di dati di temporizzazione

Il dattiloscritto di base è l'ideale quando vuoi semplicemente registrare i tuoi passi per una successiva lettura o condivisione. lo script può anche salvare i dati di temporizzazione insieme al suo registro di testo. Queste informazioni possono essere utilizzate per riprodurre l'intera sessione del terminale con ritardi appropriati tra i comandi.

Esegui lo script con il flag -t per specificare un percorso in cui scrivere i tempi. I file di temporizzazione hanno un formato a due colonne. Ogni voce contiene il tempo trascorso dall'ultimo record nella prima colonna. La seconda colonna registra il numero di caratteri che sono stati digitati, consentendo ripetizioni accurate della velocità di digitazione.

script -q -t example_session_timings example_session

Sessioni di riproduzione

Il comando scriptreplay legge i dattiloscritti e i file di temporizzazione creati dallo script. Riproduce il loro output nel tuo terminale. I dati di temporizzazione verranno utilizzati per far corrispondere la durata di ciascun carattere digitato alla sua lunghezza nella sequenza di comandi originale.

scriptreplay -t example_session_timings example_session

Alcuni dattiloscritti potrebbero contenere ritardi indesiderati o essere eseguiti a una velocità eccessivamente lenta. Usa il flag -d per accelerare l'output. Tutti i tempi registrati saranno divisi per il numero passato.

# Esegui scriptreplay 4 volte più veloce -d 4 -t timings typescript

Puoi anche usare il flag -m per limitare il ritardo massimo tra i singoli aggiornamenti. Ciò consente di specificare la pausa più lunga consentita in secondi prima che scriptreplay passi al comando successivo, anche se il dattiloscritto specifica un ritardo maggiore.

# Ritardo massimo di 2 secondi scriptreplay -m 2 -t timing dattiloscritto

Uso con comandi interattivi

Non è consigliabile utilizzare script con comandi fortemente interattivi. È probabile che gli editor di testo del terminale, le applicazioni basate su curses e i prompt di dialogo inseriscano caratteri spazzatura inquinanti nel dattiloscritto. lo script si concentra sull'acquisizione di un tipico output basato su testo, non sui comandi che manipolano il tuo terminale per produrre un'interfaccia grafica.

Pubblicità

lo script non è adatto per l'uso con shell non interattive come suo interno shell è sempre interattivo per natura. Non ci si dovrebbe aspettare che il comando funzioni nemmeno con l'input in pipe.

Altre opzioni

Il flag -c dello script ti consente di specificare un comando. Quando viene utilizzata questa modalità, lo script esegue il comando e acquisisce il suo output, invece di eseguire il fork di una nuova shell interattiva. Questo può essere più efficace nel catturare l'output di alcuni processi che si comportano diversamente quando non sono collegati direttamente a un TTY.

Il flag -f indica allo script di scrivere direttamente nel log della sessione dopo ogni evento. Ciò migliora la sicurezza garantendo che l'output venga catturato immediatamente.

La pagina di manuale dello script suggerisce che questo flag potrebbe essere utilizzato anche per monitorare il terminale di un utente in tempo reale, come in uno scenario di insegnante e studente. Lo studente eseguirà lo script -f, quindi l'insegnante utilizzerà SSH per connettersi e trasmettere il file dattiloscritto in tempo reale.

Lo script di solito non accetta un collegamento simbolico come percorso dattiloscritto. Il flag –force abilita questo comportamento, istruendo lo script a risolvere i collegamenti hardware e software alla loro destinazione.

Riepilogo

lo script ti consente di registrare le sessioni del terminale in modo semplice file di testo con dati di temporizzazione accurati. Puoi ispezionare, condividere e stampare i dattiloscritti manualmente o riprodurli nel tuo terminale usando scriptreplay.

Pubblicità

I comandi sono inclusi nelle distribuzioni Linux più popolari. Funzionano con tutti i tipi di terminale, ma i singoli dattiloscritti potrebbero non essere riprodotti correttamente in un terminale diverso da quello utilizzato per la registrazione. Per ottenere i migliori risultati, esegui scriptreplay nello stesso tipo di terminale utilizzato con script.