GNU/Linux >> Linux Esercitazione >  >> Linux

Come ripulire l'output del comando 'script' di Linux

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 (il g 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 ]
  • \[.*?[a-zA-Z] significa
    • corrisponde a una stringa che inizia con [ quindi esegui un .*? non avido fino al primo carattere alfabetico
  • \].*?\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)"

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.).


Linux
  1. Come assegnare l'output di un comando Linux a una variabile

  2. Come salvare l'output dei comandi in un file in Linux

  3. Come rinominare i file in Linux

  4. Come usare il comando Su in Linux

  5. Come sapere se l'output di un comando o di uno script di shell è Stdout o Stderr?

Come rimuovere una directory in Linux

Come usare il comando nohup di Linux

Come abilitare il timestamp nell'output del comando della cronologia di Linux

Come eseguire il comando / script della shell di Linux in background

Come salvare l'output dei comandi di Linux in un'immagine o in un file di testo

Come memorizzare un comando Linux come variabile nello script della shell