Comando clear in Linux: schermo, scrollback e opzione -x
clear ripulisce lo schermo del terminale. Nell’implementazione ncurses tenta anche di cancellare il buffer di scrollback, cioè l’output precedente che potete raggiungere scorrendo verso l’alto, se il terminale lo supporta; clear -x evita quel tentativo.
clear non cancella file o cronologia dei comandi della shell. Cronologia e scrollback sono distinti: la prima conserva i comandi secondo le impostazioni della shell, il secondo riguarda ciò che il terminale ha visualizzato.
Che cos'è il comando clear?
clear legge la variabile di ambiente TERM, che identifica il tipo di terminale, e consulta terminfo, il database delle sue capacità. Emette quindi sequenze di controllo, ossia byte interpretati dal terminale per cambiare la visualizzazione. Non si limita a stampare righe vuote.
Le opzioni descritte appartengono a clear di ncurses, la libreria e raccolta di strumenti per interfacce testuali usata su molti sistemi Linux. La disponibilità del comando, delle opzioni e delle voci terminfo dipende dall’installazione.
Sintassi di base
clear [-x] [-T terminal_type]
clear -V
Nella sintassi, terminal_type è un segnaposto per un tipo di terminale reale. Nel normale terminale di lavoro eseguite semplicemente il comando seguente: la schermata viene ripulita e il cursore torna all’inizio. I comandi già presenti nella cronologia della shell rimangono disponibili.
clear
Cosa cancella clear e cosa non cancella
| Elemento | Azione |
|---|---|
| Schermata corrente del terminale | Ripulisce la parte visibile e riporta il cursore all’inizio. |
| Buffer di scrollback | Può richiederne la cancellazione se terminfo e terminale lo supportano; -x evita quel tentativo. |
| Cronologia dei comandi della shell | Non la cancella. I comandi registrati restano consultabili secondo le impostazioni della shell. |
| File di log e dati salvati | Non modifica i file di log o i dati salvati dai programmi. |
| Variabili di shell e directory corrente | Non modifica le variabili della shell o la directory corrente. |
Conservare lo scrollback con -x
clear -x
-x ripulisce la parte visibile senza richiedere la cancellazione dello scrollback. Per confrontare i due comportamenti, provate clear -x e clear nello stesso terminale, dopo output che potete permettervi di perdere dalla vista. Provate poi a scorrere verso l’alto. Il risultato dipende anche dal terminale: non usate la prova per conservare l’unica copia di un risultato importante.
Questa è un’opzione di ncurses, non una funzione universale di ogni comando chiamato clear. Controllate la versione con clear -V e confrontatela con il manuale installato. Il programma restituisce la versione di ncurses associata senza ripulire lo schermo.
Scegliere il tipo di terminale con -T
clear -T xterm-256color
-T usa il tipo indicato al posto di quello ricavato da TERM; nell’implementazione ncurses ignora anche LINES e COLUMNS. L’esempio è adatto solo a un terminale compatibile con xterm-256color e con la relativa voce terminfo disponibile. Per la diagnosi, prima leggete il valore corrente e la sua descrizione:
printf '%s\n' "$TERM"
infocmp "$TERM"
printf mostra il nome; infocmp mostra la descrizione terminfo, se presente, oppure un errore. Richiede che il relativo strumento sia installato. Scegliere un tipo incompatibile non corregge il terminale: può produrre una visualizzazione errata o caratteri di controllo visibili.
Riepilogo delle opzioni
| Opzione | Descrizione |
|---|---|
-x |
Non richiede la cancellazione dello scrollback. |
-T type |
Usa il tipo indicato; in ncurses ignora anche LINES e COLUMNS. |
-V |
Mostra la versione di ncurses associata al programma ed esce. |
Differenza tra Ctrl+L e clear
Readline è il componente che gestisce la modifica della riga in Bash. Nella modalità Emacs predefinita, Ctrl+L è associato a clear-screen: ripulisce la schermata e ridisegna la riga corrente in alto. Associazioni personalizzate, altre modalità e il terminale possono cambiare il risultato; non presumete che lo scrollback venga trattato come con clear.
| Metodo | Vantaggi | Caratteristiche |
|---|---|---|
clear |
Ripulisce tramite terminfo e consente di scegliere le opzioni. | Può tentare di cancellare anche lo scrollback. |
clear -x |
Evita la richiesta di cancellazione dello scrollback. | L’opzione dipende dall’implementazione ncurses. |
Ctrl+L |
Ripulisce e ridisegna la riga senza lanciare un programma esterno. | Il risultato dipende da Readline, modalità di modifica e terminale. |
Differenza tra clear e reset
clear serve a ripulire la visualizzazione di un terminale che funziona normalmente. reset reinizializza anche lo stato del terminale: può essere utile se output binario o sequenze errate hanno alterato la visualizzazione, l’eco dei caratteri digitati o la gestione delle righe.
reset
Usate reset nel terminale interessato, dopo aver interrotto l’eventuale programma che continua a produrre output errato. Può modificare modalità di input e output; non è necessario soltanto perché la schermata è piena. Se non risolve, controllate il tipo di terminale e le impostazioni dell’emulatore.
Ripulire lo schermo con tput
tput consulta terminfo per emettere sequenze di controllo. Il comando seguente usa la capacità di pulizia del terminale:
tput clear
Nel moderno ncurses, anche tput clear può tentare di cancellare lo scrollback, quindi non è un sostituto che ne garantisca la conservazione. Per combinare capacità diverse in uno script verificate la versione e gli stati di uscita di tput. Se redirigete l’output in un file, registrate i byte di controllo anziché ripulire una schermata.
Usare clear negli script
Ripulite lo schermo negli script solo quando è parte dell’interfaccia prevista, per esempio in un cruscotto interattivo. In uno script che produce risultati o log, conservare l’output precedente aiuta la diagnosi. La condizione seguente evita di emettere le sequenze quando lo standard output è un file o una pipe:
if test -t 1; then
clear
fi
test -t 1 verifica se il descrittore 1, lo standard output, è collegato a un terminale. Questo controllo non garantisce che TERM sia corretto, che terminfo contenga la voce necessaria o che clear sia disponibile: gestite anche gli eventuali errori. Per aggiornamenti periodici potete valutare strumenti come watch, se installati e adatti allo scopo.
Risoluzione dei problemi
TERM non è impostato
Il messaggio TERM environment variable not set indica che il programma non ha ricevuto il tipo di terminale. Può capitare in processi avviati senza un terminale, attività pianificate o ambienti configurati in modo incompleto. Leggete il valore nella sessione interessata:
printf '%s\n' "$TERM"
Se l’output è vuoto, non assegnate un valore casuale. Se il processo deve essere interattivo, verificate che la sessione SSH, il container o il programma che lo avvia disponga di un terminale e trasmetta il tipo corretto. Se produce solo log, omettete invece la pulizia dello schermo.
Il tipo di terminale non è riconosciuto
Il messaggio unknown terminal type può indicare che il nome ricevuto non è presente nel database terminfo disponibile al programma. Controllate infocmp "$TERM" nello stesso ambiente. Verificate il valore inviato dal client e il pacchetto delle descrizioni dei terminali previsto dalla distribuzione; non cambiate TERM senza controllare la compatibilità.
L’output precedente rimane visibile
Verificate se avete usato -x, quale implementazione state eseguendo e se la voce terminfo e l’emulatore supportano la cancellazione dello scrollback. Il fatto che possiate ancora scorrere l’output non indica un problema della cronologia della shell: sono due meccanismi distinti.
Domande frequenti
L'esecuzione del comando clear elimina anche la cronologia?
No. Il programma ncurses clear cambia la visualizzazione del terminale e non cancella la cronologia di Bash. La possibilità di ritrovare un comando con history o Freccia Su dipende comunque dalle impostazioni della cronologia.
Posso cancellare solo lo schermo mantenendo lo scrollback?
Con ncurses usate clear -x, che non richiede la cancellazione dello scrollback. Controllate che l’implementazione installata supporti questa opzione e verificate il risultato nel terminale che usate.
C'è il rischio che clear cancelli file?
Il programma ncurses clear emette sequenze di controllo e non elimina file. Un alias o una funzione con quel nome può però eseguire altro: controllate type -a clear per vedere come Bash risolve il nome.




