Come cancellare davvero il terminale?


385

Posso eseguire il clearcomando o premere Ctrl+ Lper cancellare il terminale di Ubuntu corrente, ma questo solo si sposta verso l'alto di uscita precedente e se si utilizza di scorrimento del mouse o PgUPed PgDowni tasti che è difficile distinguere dove l'uscita di precedenti estremità di comando e output del comando corrente comincia.

C'è un modo per cancellare davvero il terminale in modo che non vedrò i risultati dei comandi precedenti?


11
Premi Ctrl + L due volte e diventi vuoto!
Pandya,

Risposte:


456

Sì, il comando che stai cercando è

reset

Contrariamente a clear, o Ctrl+ L, resetin realtà reinizializzerà completamente il terminale , anziché semplicemente cancellare lo schermo. Tuttavia, non ri-istanzia la shell (bash). Ciò significa che lo stato di Bash è lo stesso di prima, proprio come se stessi semplicemente cancellando lo schermo.

Come menziona @Wallacoloo nei commenti, questo comando dovrebbe fare la stessa cosa più rapidamente:

tput reset

Dalle altre risposte:

  • È possibile impostare una scorciatoia da tastiera per resetil terminale, come spiegato da towolf .

  • Se stai eseguendo Kubuntu e il tuo terminale è Konsole, devi andare su Modifica → Cancella cronologia , poiché resetnon funziona allo stesso modo, come osserva UncleZeiv .


9
Probabilmente non importa per la maggior parte degli utenti, ma il comportamento resetdipende dal terminale.
cthom06,

2
Personalmente non mi dispiace che qualcosa venga lasciato "in alto" lungo lo scroller quando colpisco ^L. Non lo vedo (è quello che voglio!), Non lo sento, e se improvvisamente avrei bisogno di ripristinare ciò che era lì - nessun problema. resetal contrario è uno strumento molto più difficile - lo userò quando qualcosa andava storto con il terminale - come quando strane sequenze di escape rovinavano accidentalmente il display.
Ulidtko,

14
@ulidtko: importa quando si eseguono sessioni consecutive di programmi con tonnellate di output. Se scorri indietro è facile confondersi su quale esecuzione abbia stampato qualcosa. So perfettamente che in questi casi potrebbero essere utilizzate soluzioni più sofisticate, ma è comunque uno scenario che si presenta abbastanza spesso in sessioni di debug veloci e sporche.
ZioZeiv,

7
C'è anche quello tput resetche fa visibilmente la stessa cosa, ma si completa istantaneamente (mentre resetpuò richiedere fino a circa 2 secondi prima che ricompaia il prompt).
Ponkadoodle

1
Questo fa ridimensionare la mia finestra putty.exe, sarebbe bello da cancellare senza che ciò accadesse.
void.pointer

100

Lo stavo cercando da un po 'e ho trovato un po' di genio che ha pubblicato questo:

clear && printf '\e[3J'

Cancella l'intero buffer dello schermo, molto pulito. Funziona su OS X e crede che funzioni bene sulla maggior parte dei terminali * nix.

Per curiosi, questa parte '\e[3J'è un comando di escape terminale.


2
Hmm, funziona in xterm, Konsole e Linux VT, ma non in gnome-terminal ...
Ruslan

1
Grazie, funziona benissimo sul mio Mac - mi è davvero mancato un vero stile Bash reset.
JohnnyCoder,

9
Grazie, è super utile! Cosa printf '\e[3J'significa? Come pulisce il buffer?
Filip Spiridonov,

4
fai attenzione alias reset: non si limita a cancellare il terminale. ad esempio, se si stampa accidentalmente un file binario con immondizia casuale che corrompe il terminale (ad esempio disabilita l'eco dei caratteri digitati), di resetsolito è possibile risolverlo. ovviamente l'aliasing va bene fintanto che sai come eseguire \overrideun comando alias-shadowed.
RubyTuesdayDONO,

4
Questa è l'unica risposta che funziona per cancellare lo scrollback di Putty quando si accede ad alcuni SSH tramite Winder.
Dhaupin,

45

Puoi anche assegnare una scorciatoia in gnome-terminal andando su Modifica → Scorciatoie da tastiera . Io uso Shift+ Ctrl+ Alt+ C.

ripristina e cancella il collegamento


+1. Ho sempre nascosto la barra dei menu; così, anche dopo anni e anni di utilizzo di gnome, non ho mai pensato di cercarlo. Grazie :-)
Stefano Palazzo

3
"Ripristina" non fa nulla per me e "Ripristina e cancella" cancella tutto ma non visualizza nuovamente il messaggio. Nessuna di queste voci di menu si comporta come il comando "reset" da un terminale.
Hibou57,

Come ha detto @ Hibou57, la mia scorciatoia da tastiera per "Ripristina" non sembra fare nulla. Questa funzionalità è stata interrotta nel 14.04?
Michael Martin-Smucker,

"Questa funzionalità è stata interrotta in 14.04?": È la stessa con 12.04.
Hibou57,

1
@ Hibou57 "Ripristina e cancella" non dovrebbe visualizzare nuovamente il prompt, ma se si preme Invio in seguito, è necessario visualizzare nuovamente il prompt. Funziona per te?
Don Hatch,

19

Invio incrociato della mia risposta da StackOverflow .

Usa il seguente comando per fare una schermata chiara invece di aggiungere semplicemente nuove righe ...

printf "\033c"

sì, questo è un 'printf' sul prompt di bash.

Probabilmente vorrai definire un alias però ...

alias cls='printf "\033c"'

Spiegazione

\033 == \x1B == 27 == ESC

Quindi questo diventa <ESC>cqual è il codice di escape VT100 per ripristinare il terminale. Ecco alcune ulteriori informazioni sui codici di escape del terminale.

modificare

Ecco alcuni altri modi per farlo ...

printf "\ec" #\e is ESC in bash
echo -en "\ec" #thanks @Jonathon Reinhart.
# -e    Enable interpretation of of backslash escapes
# -n    Do not output a new line

KDE

Quanto sopra non funziona sulla console di KDE (chiamata Konsole) ma c'è speranza! Utilizzare la seguente sequenza di comandi per cancellare lo schermo e il buffer di scorrimento indietro ...

clear && echo -en "\e[3J"

O forse usa il seguente alias su KDE ...

alias cls='clear && echo -en "\e[3J"'

Ho ricevuto il comando di cancellazione scroll-back da qui .


18

eseguire questo comando:

reset

Ciò ha lo stesso effetto del lancio di un nuovo terminale.


6
Quando uso putty, dopo l'esecuzione reset, posso ancora scorrere verso l'alto e vedere cose precedenti. È un problema con PuTTY piuttosto che reset?
Svish,

@svish - questo è solo un problema o una decisione di implementazione dello stucco.
belacqua,

@jgbelacqua, Deal :)
Svish,

Ha funzionato con il terminale MAC OS
Bira l'

2
@Bira No, resetnon cancella lo scrollback su macOS 10.14 Mojave. Potresti provare seq 100; reseta vedere lo scrollback ancora lì. Sul terminale macOS, è Cmd+Kpossibile cancellare lo schermo e lo scorrimento.
Johnny Wong,

8

Il mio preferito è printf "\ec". Questo può anche essere printf "\033c"o printf "\x1bc". Questa è una sequenza di escape ansi che cancella miracolosamente lo schermo e il buffer per l'output del terminale (per la maggior parte dei terminali standard in cui ho lavorato sembra - so che funziona come gnome-terminal, terminator, xterm, ecc. Su Ubuntu-like versioni di Linux)

So che funziona con Linux Mint e Ubuntu 14.04, quindi non so perché le persone stiano aggiungendo e preparando cose del genere clear && echo -ne "\033c. printf "\ec"ha sempre lavorato per me.

Inoltre, nel mio .bashrcho un'associazione come questa:

bind -x '"\C-t": printf "\ec"';

Adesso premo ctrltsempre.


Sai come è possibile creare una mappatura usando il tasto Windows? Questo frammento è davvero eccezionale, funziona esattamente come Command-K su Mac. Grazie.
Niloct,

@Niloct puoi vedere se il terminale lo supporta con xev(basta digitare xevun terminale all'interno di una sessione x). Da quello che potrei dire, urxvt non lo supporta; mentre non ho provato in un tty, sono sicuro che non sarebbe supportato. Dubito anche che xterm o gnome-terminal lo sosterrebbero. È difficile con ansi-escape. Saluti e scusa per la risposta tardiva.
dylnmc,

Va bene @dylnmc, lo apprezzo. Grazie per il commento.
Niloct,

5

Bene, dipende davvero, se stai usando, Konsolead esempio, resetnon ti impedisce di scorrere oltre la prima riga. In tal caso, è necessario utilizzare alcune funzionalità del terminale specifico in uso. Perché Konsolelo è Edit > Clear History.


3

Ho trovato quanto segue per avere abbastanza successo con Kubuntu:

alias clc="echo -en '\033c\033[3J'"

È possibile utilizzare clsper mantenere la tradizione Windows, utilizzare la versione Matlab clco una propria. In bocca al lupo!



2

Un'altra alternativa alla risposta @ Hibou57:

# The Octal Way
alias clear="echo -e '\033c\c'"

O

# The Hex Way
alias clear="echo -e '\x1b\c'"

Fondamentalmente questo avrà esattamente lo stesso effetto, stamperà il ^[personaggio (che cancella il tuo terminale) e non emette la nuova riga finale.


Correzione leggera: stampa il ^[carattere (ESC) seguita da ccarattere, non solo il ^[carattere solo. Combinati, equivalgono al codice terminale "RIS", che provoca un ripristino. Maggiori informazioni: xfree86.org/4.8.0/ctlseqs.html
jwd,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.