Le miniguide di UbaWeb

Bash: Salvare sessione del terminale

Premessa Torna su

21 giugno 2012 - Linux 2.6.32-41-generic-pae -Ubuntu i686 GNU/Linux - Ho avuto un problema utilizzando il comando "script" per salvare le sessioni di shell; visto che: io ho trovato una soluzione radicale e limitante, mentre Laycastle ne ha trovata una indubbiamente migliore e credendo che possa essere utile a qualcuno, inserisco in questa pagina quanto è stato scritto sul forum di Ubuntu.

Il problema Torna su

Avendo bisogno di tenere traccia di una sessione di gnome-terminal ho provato ad utilizzare il comando "script".
Il file typescript viene creato, ma non risulta essere leggibile con "cat".
Aprendolo con "cat" ottengo solo la prima riga:

Script iniziato su mer 20 giu 2012 18:38:01 CEST

aprendolo con gedit vedo che il testo è presente ma è mischiato a simboli strani .

Script iniziato su mer 20 giu 2012 18:38:01 CEST 8-) $ ls alsa nano-supplement.tar ....e così via

I caratteri strani non sono mostrati nella pagina html, comunque appaiono così:


eseguendo "file" sul file ottengo:

8-) $ file typescript typescript: ASCII text, with CRLF, LF line terminators, with escape sequences

Ho risolto ugualmente aprendo una bash in modalità interattiva e redirigendo i flussi con tee su schermo e su file di testo ma vorrei capire da cosa può dipendere il malfunzionamento. (Pensavo fosse un malfunzionamento ma non è così)

Ho provato a leggere typescript con "cat" da shell vera (Ctrl+Alt+f2) e funziona benissimo, viene stampato a video il testo colorato.
Ho pensato che il problema dipendesse proprio dal testo colorato quindi in .bashrc ho commentato la riga:

# force_color_prompt=yes

ed ora con "cat" posso visualizzare correttamente il file typescript anche da gnome-terminal (anche il testo colorato).
Rimaneva il problema dell'utilizzo del file con gli editor di testo in quanto i caratteri aggiunti, che credo servano per definire i colori, erano sempre presenti.
Così, in .bashrc, ho disattivato i colori modificando alcune righe in questo modo:

... xterm-color) color_prompt=non-color;; # disattivo i colori per xterm. Era impostato a "yes" ... #alias ls='ls --color=auto' #alias dir='dir --color=auto' #alias vdir='vdir --color=auto' #alias grep='grep --color=auto' #alias fgrep='fgrep --color=auto' #alias egrep='egrep --color=auto'

Risolto! Ora funge tutto bene, non vengono aggiunti altri caratteri oltre al testo semplice.

Metodo alternativo Torna su

Per chi volesse tenere attiva la colorazione del testo, invece del comando "script", può utilizzare questo codice:

bash -i 2>&1 | tee registra_shell.txt

Redirigo tutti i flussi di testo su tee che a sua volta li stampa a schermo e sul file di testo indicato
In questo modo viene registrata la sessione nel file registra_shell.txt.
Come per il comando "script", la sessione si termina digitando exit oppure premendo la combinazione di tasti Ctrl+d.

Se si volesse accodare una nuova sessione al file già creato basta usare l'opzione -a (append mode) di "tee", così:

bash -i 2>&1 | tee -a registra_shell.txt

La soluzione migliore Torna su

Laycastle mi scrive:

Ciao, siccome l'output colorato rende tutto molto più leggibile io farei in un'altra maniera:
metterei nel .bashrc

alias script='script -c "bash --rcfile ~/.nocolor"'

poi farei uno script .nocolor nella mia home contenente questo codice:

PS1="prompt senza colori $ " alias ls='ls --color=no' alias dir='dir --color=no' alias vdir='vdir --color=no' alias grep='grep --color=no' alias fgrep='fgrep --color=no' alias egrep='egrep --color=no'

Grazie a Laycastle questa soluzione non ci limita nell'uso dell'output colorato nelle normali sessioni ma lo disabilita solo quando si utilizza il comando "script".

Credo che sia tutto!
Bye 8-)

Torna su
Sito realizzato da: UbaWeb di Giovanni Ubaldi

Licenza Creative Commons Tutto il contenuto di questo sito se non diversamente dichiarato è di Giovanni Ubaldi ed è distribuito con Licenza:

Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale.