Risposte:
È possibile utilizzare tput reset
.
Inoltre reset
e tput reset
puoi usare il seguente script di shell.
#!/bin/sh
echo -e \\033c
Questo invia i caratteri di controllo Esc-C
alla console che reimposta il terminale.
Parole chiave di Google: sequenze di controllo della console Linux
man console_codes
dice:
La sequenza ESC c provoca un reset del terminale, che è quello che vuoi se lo schermo è tutto confuso. "Echo ^ V ^ O" spesso consigliato renderà G0 attuale, ma non vi è alcuna garanzia che G0 punti alla tabella a). In alcune distribuzioni c'è un reset del programma (1) che fa semplicemente "eco ^ [c". Se la tua voce terminfo per la console è corretta (e ha una voce rs1 = \ Ec), funzionerà anche "tput reset".
tput reset
è più veloce che reset
in Ubuntu 16.04, almeno
So che sei su un terminale gnomo, ma ho pensato di rispondere con un suggerimento per gli altri che potrebbero essere (come me) su un Mac:
Se stai usando Terminal.app
o iTerm.app
quindi Control+L
scorrerai verso l'alto in modo che il terminale appaia vuoto, ma Cmd+K
ripristinerà effettivamente il terminale / cancella lo scorrimento indietro.
Oppure, se sei in grado di impostare le preferenze della tastiera per il tuo terminale, potresti essere in grado di assegnare qualcosa di simile Ctrl+K
all'input echo -e \\033c
come menzionato sopra.
Cmd+K
è tutto ciò che volevo. ty
La risposta di Anthon funziona in KDE Konsole, ma non in urxvt. In urxvt, sto usando reset da alcuni anni per cancellare lo scrollback (insieme a tutte le altre cose che fa), e non ero soddisfatto che non funzionasse in Konsole. Quindi ora per Linux ho un nuovo alias:
alias allclear='clear; echo -e "\033c\e[3J"'
Ma non funziona su OS X.
tput reset
non funziona in nessun contesto AFAICT.
In KDE Konsole, ctrl- shift- kcancella lo scrollback (incluso il prompt della shell corrente, quindi è completamente vuoto). In iTerm o Apple del terminale su OS X, cmd- shift- kcancella anche lo scorrimento. Per aggiungere questa funzione a urxvt, aggiungila a ~ / .Xresources:
urxvt*keysym.C-S-K: command:\033c
allclear(){
`echo" Cancellazione di terminale e scrollback ... "` `sleep 1.5`` clear; echo -e "\ 033c \ e [3J" ` }
` Modifica: impossibile far funzionare la formattazione. Se qualcuno è in grado di modificarlo in modo che sia leggibile, lo apprezzerei.
Ho mappato F12per cancellare lo schermo in ciascuna delle seguenti shell: bash , csh e fish shell . Il mio comando è diverso da tutti quelli precedenti perché conserva tutto ciò che hai già digitato nella riga corrente.
(Nota: tutte le configurazioni sottostanti dipendono dal terminale, ma spero che funzionino praticamente ovunque)
Apri il file ~/.inputrc
e inserisci la seguente riga:
"\e[24~": "\C-k \C-uecho -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\n\C-y\C-?"
Per rendere disponibile la nuova associazione di chiavi, aprire un nuovo terminale o digitare Ctrl+ Xquindi Ctrl+ Rper ricaricare il file .inputrc nel terminale corrente.
Spiegazione
Il file ~ / .inputrc controlla i collegamenti dei tasti del terminale bash.
A proposito della linea:
"\e[24~"
, mappa la chiave F12.C-k
( Ctrl+ X) cancella il kill-ring (memoria di copia e passato di bash).C-u
( Ctrl+ U) invia la linea corrente al kill-ring e la cancella.echo -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\n
invia due comandi raggruppati al terminale. Sono separati da ;
e terminati da \n
.
echo -ne '\\ec\\e[3J'
cancella lo schermo.history -d $((HISTCMD-1))
evita questi due comandi di entrare nella storia.C-y
( Ctrl+ Y) incolla il kill-ring memorizzato dal C-u
comando.C-?
( Ctrl+ ?) è equivalente Backspacee rimuove lo spazio inserita nel passaggio 3 sopra.Riferimenti:
Digita il comando sotto.
bindkey -c "^[[24~" "echo -ne '\ec\e[3J'"
Può anche essere inserito nel tuo .cshrc
file per caricare il key binding su ogni nuovo terminale.
(Sì, è molto più semplice che in bash)
Digita il comando sotto.
bind -k f12 "echo -ne '\ec\e[3J'; commandline -f repaint"
È possibile modificare e salvare la funzione fish_user_key_bindings
per caricare l'associazione dei tasti su ogni nuovo terminale.
(Sì, è molto più semplice che in bash)
[Ubuntu 16.04]
Il file .bash_history viene creato nella home directory dell'utente una volta chiuso il terminale
È utile, ma è possibile eliminarlo se lo si desidera. Tuttavia, verrà creato ogni volta che si finisce di utilizzare il terminale.
Puoi eliminarlo manualmente da:
il tuo browser di file.
il terminale: ricorda che un nuovo file .bash_history verrà creato quando chiudi il terminale (basato sulla sua configurazione predefinita).
Oppure puoi chiamare una funzione personalizzata se salvi la funzionalità di cui hai bisogno in un file collegato dal bashrc .. potresti modificare il bashrc stesso se ti piace inserire il tuo codice lì, ma i prossimi esempi sono in un file separato
Onestamente questo non è utile per me, ma se desideri eliminare la cronologia dei comandi prima di uscire puoi farlo:
.bash_custom #questo è il mio file personalizzato
blotout() {
HISTSIZE=0
rm $HOME/.bash_history
exit
}
quindi nella parte inferiore di aggiungere il nome e il percorso del mio file
.bashrc # questo è il file di configurazione per il bash (penso)
# existent code
#...
#..
# import user customizations
source $HOME/.bash_custom
e questo è tutto.
MA, per fare esattamente quello che vuoi hai solo bisogno di questa funzione nel tuo file personalizzato e collegarlo:
refresh() {
tput reset
H=HISTSIZE
HISTSIZE=0
HISTSIZE=H
}
O semplicemente metti la funzione in .bashrc se vuoi, ma in questo modo probabilmente avrai bisogno di una dichiarazione di esportazione dopo la funzione non sono sicuro e se il file aggiornato probabilmente ha perso le tue funzioni .. Non ne sono sicuro anche: D
Ricorda che devi riavviare il terminale quando modifichi il .bashrc o il tuo file 'personalizzato'.
Per me, usando PuTTY contro CentOS 7, clear lascia solo il comando clear nello scrollback, ma eseguendo "clear && clear", due istanze del comando clear allo stesso tempo, cancella completamente lo scrollback e non mi lascia alcuna barra di scorrimento. Prova questo. È una soluzione strana ma nessuno di questi ha cancellato lo scrollback in modo efficace, e questo lo fa.
In Fedora 30, l'eliminazione della cronologia viene eseguita rimuovendo il file $ HOME / .bash_history. Il modo più semplice per cancellare il file della cronologia del terminale tramite la tastiera è:
nautilus
e premere il Entertasto per aprire l'applicazione (GNOME) File (precedentemente noto come Nautilus)..bash_history
(che dovrebbe apparire nella barra di ricerca se digitato immediatamente dopo l'apertura della finestra; in caso contrario, è possibile accedere alla barra di ricerca tramite Ctrl+ L).cat /dev/null > ~/.bash_history && history -c && exit
history -c
è stato presentato in due risposte precedenti e sono stati eliminati per non essere risposte corrette alla domanda. (2) Mentre chiudendo la finestra del terminale si cancellerà (probabilmente) la memoria del terminale dei comandi precedenti, è tutt'altro che evidente che l'OP voglia farlo. ... E PS Un singolo exit
comando non è garantito per chiudere la finestra del terminale.