Cancellare schermata e buffer del terminale Linux

· 2 min lettura
Cancellare schermata e buffer del terminale Linux

Chi usa il terminale UNIX probabilmente sarà a conoscenza del comando clear, o della sua scorciatoia CTRL + L.

In alcuni terminali, per esempio il Gnome-Terminal, se si scrollerà con il mouse a ritroso, si farà sicuramente caso che tutte le righe che erano prima del comando clear sono ancora lì e sono leggibili.

Questo può essere fastidioso quando si lavora con stream di output molto lunghi, composti da molte righe, dove si dovrebbe avere la necessità di “scrollare” con il mouse in diverse parti della schermata, avendo come risultato l’output dei comandi precedenti aggiunti al nostro stream, che “sporcano” ciò che leggiamo.

Per risolvere questo problema, esistono due approcci:

Comando “reset”

Il comando reset altro non fa che resettare il terminale attuale, iniziando una nuova sessione.
Ciò ha un minuscolo inconveniente: non è immediato.
Infatti, verranno impiegati circa un paio di secondi per resettare la sessione del terminale.

So perfettamente che un paio di secondi sono, per alcuni, troppo pochi per essere considerati “attesa”, ma posso assicurarvi che le volte in cui, al lavoro, ho avuto la necessità di avere uno schermo pulito letteralmente “subito”, sono state decisamente tante.

Per risolvere questa piccola “attesa”, uso un secondo approccio:

Comando “clear” e pulizia del buffer del display

La serie di comandi che utilizzo, è la seguente:

clear && printf '\e[3J'

Potrà sembrare difficile da ricordare, perciò il mio consiglio è di abbinarlo ad un alias più facile da memorizzare, per esempio “clean”, “clearnscreen” o qualsiasi cosa sia meglio per voi.

Analisi del comando

printf '\e[3J'
printf
Produce un output formattato

' '
Se i caratteri sono inseriti tra singoli apici, essi vengono inviati al comando printf in modo letterale, senza effettuare macro-espansioni

\e
Indica che il carattere successivo è un carattere di escape

[
Carattere di escape, deve precedere uno tra i caratteri della tabella dei caratteri di controllo ANSI

nJ
Il codice J equivale ad una funzione chiamata "erase on display". Se "n" è 3, viene specificata l'eliminazione di tutte le righe presenti nel buffer di memoria del display.

Il risultato sarà una schermata pulita e un terminale pronto per lavorare.

Ogni volta che supporti il blog

Tyrion educa suo nipote Joffrey

Supporta anche tu la tradizione della punizione corporale