Se desideri visualizzare il file, puoi inviare l'output tramite col -bp
; questo interpreta i caratteri di controllo. Quindi puoi passare meno tempo, se lo desideri.
col -bp typescript | less -R
Su alcuni sistemi col
non accetterebbe un argomento di nome file, usa invece questa sintassi:
col -bp <typescript | less -R
cat typescript | perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' | col -b > typescript-processed
ecco un'interpretazione della stringa inserita in perl
:
s/pattern//g
significa fare una sostituzione sull'intero (ilg
opzione significa fare tutto invece di fermarsi sulla prima stringa di input sostitutiva
ecco qualche interpretazione del pattern regex:
\e
corrisponde al carattere di controllo speciale "escape" (ASCII 0x1A)(
e)
sono l'inizio e la fine di un gruppo|
significa che il gruppo può corrispondere a uno degli N modelli. dove gli N pattern sono[^\[\]]
o\[.*?[a-zA-Z]
o\].*?\a
[^\[\]]
significa- corrisponde a un insieme di caratteri NOT dove i caratteri not sono
[
e]
- corrisponde a un insieme di caratteri NOT dove i caratteri not sono
\[.*?[a-zA-Z]
significa- corrisponde a una stringa che inizia con
[
quindi esegui un.*?
non avido fino al primo carattere alfabetico
- corrisponde a una stringa che inizia con
\].*?\a
significa- corrisponde a una stringa che inizia con
]
quindi esegui un.*?
non avido finché non premi il carattere di controllo speciale chiamato "il carattere di avviso (campana)"
- corrisponde a una stringa che inizia con
Per una grande quantità di script
output, creerei uno script perl insieme in modo iterativo. Altrimenti modifica a mano con un buon editor.
È improbabile che esista un metodo automatico esistente per rimuovere i caratteri di controllo da script
l'output in un modo che riproduce ciò che è stato visualizzato sullo schermo in determinati momenti importanti (come quando l'host stava aspettando quel primo carattere di alcuni input dell'utente).
Ad esempio, lo schermo potrebbe essere vuoto ad eccezione di Andrew $
, se poi hai digitato rm /*
e premuto backspace dodici volte (molto più del necessario), ciò che viene mostrato sullo schermo alla fine dipende da quale shell era in esecuzione, qual è il tuo attuale stty
sono le impostazioni (che potresti cambiare durante una sessione) e probabilmente anche altri fattori.
Quanto sopra si applica a qualsiasi metodo automatizzato di acquisizione continua di input e output. L'alternativa principale è scattare "screenshot" o tagliare e incollare lo schermo in momenti appropriati durante la sessione (che è quello che faccio per le guide utente, le note per un registro giornaliero, ecc.).