Come posso cancellare la cronologia dei terminali di Gnome?


59

Quando usiamo clearcommand o Ctrl+ Lin terminal, cancella terminal ma possiamo ancora scorrere indietro per visualizzare gli ultimi comandi usati. C'è un modo per cancellare completamente il terminale?


Dipende dal terminale e nessuna delle risposte risponde a questo.
Thomas Dickey,

Risposte:


69

È possibile utilizzare tput reset.

Inoltre resete tput resetpuoi usare il seguente script di shell.

#!/bin/sh
echo -e \\033c

Questo invia i caratteri di controllo Esc-Calla 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".


1
Qual è la differenza tra reset e reset tput?
Toothrot,

tput resetè più veloce che resetin Ubuntu 16.04, almeno
Iván Rodríguez Torres,

5
-1, puoi ancora vedere il buffer se scorri verso l'alto
João Pimentel Ferreira,

15

È possibile utilizzare il resetcomando che ripristinerà le impostazioni del terminale.


15

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.appo iTerm.appquindi Control+Lscorrerai verso l'alto in modo che il terminale appaia vuoto, ma Cmd+Kripristinerà 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+Kall'input echo -e \\033ccome menzionato sopra.


2
Cmd+Kè tutto ciò che volevo. ty
Gaurav Gandhi,

9

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

Questa risposta è la risposta che piacerà a chiunque utilizzi Linux Bash se si aspettano lo stesso risultato che avrebbero ricevuto su un Mac premendo il comando + K. Sono andato avanti e l'ho trasformato in un comando autonomo aggiungendo la seguente funzione in fondo di /etc/bash.bashrc (quindi disconnettersi dal server, accedere nuovamente e funzionerà tramite il comando allclear): 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.
KLaw,

3

L'ho trovato in rete anni fa e funziona bene per me. Cancella completamente il terminale senza cronologia di scorrimento.

echo -e "\e[3J"

2

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)

bash

Apri il file ~/.inputrce 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:

  1. La prima parte della linea "\e[24~", mappa la chiave F12.
  2. Il C-k( Ctrl+ X) cancella il kill-ring (memoria di copia e passato di bash).
  3. Lo spazio evita un segnale acustico nel comando successivo.
  4. Il C-u( Ctrl+ U) invia la linea corrente al kill-ring e la cancella.
  5. La echo -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\ninvia due comandi raggruppati al terminale. Sono separati da ;e terminati da \n.
    • Il echo -ne '\\ec\\e[3J'cancella lo schermo.
    • La history -d $((HISTCMD-1))evita questi due comandi di entrare nella storia.
  6. Il C-y( Ctrl+ Y) incolla il kill-ring memorizzato dal C-ucomando.
  7. Il C-?( Ctrl+ ?) è equivalente Backspacee rimuove lo spazio inserita nel passaggio 3 sopra.

Riferimenti:

csh

Digita il comando sotto.
bindkey -c "^[[24~" "echo -ne '\ec\e[3J'"
Può anche essere inserito nel tuo .cshrcfile per caricare il key binding su ogni nuovo terminale.
(Sì, è molto più semplice che in bash)

conchiglia di pesce

Digita il comando sotto.
bind -k f12 "echo -ne '\ec\e[3J'; commandline -f repaint"
È possibile modificare e salvare la funzione fish_user_key_bindingsper caricare l'associazione dei tasti su ogni nuovo terminale.
(Sì, è molto più semplice che in bash)


2

[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'.


1

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.


0

Aggiunto per ~/.inputrcassociare la compensazione completa a F12:

"\e[24~":'!echo -ne \047\\0033\\0143\047\r'

0

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 è:

  • Premi Alt+ F4per chiudere ciascuna finestra del Terminale GNOME, scorrendo le finestre tramite Alt+ Tabo Alt+ Shift+ Tabsecondo necessità. (Tutte le finestre del terminale devono essere chiuse perché il file .bash_history viene creato o aggiornato quando vengono chiuse.)
  • Premi Alt+ F2.
  • Digitare nautiluse premere il Entertasto per aprire l'applicazione (GNOME) File (precedentemente noto come Nautilus).
  • Premere Ctrl+ Hse necessario per mostrare i file nascosti.
  • Tipo .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).
  • Premere il tasto freccia giù per selezionare il file, che dovrebbe essere l'unico risultato della ricerca.
  • Premi Shift+ Deleteper eliminare definitivamente il file. (Se si utilizza Deleteinvece la chiave non modificata , il file .bash_history sarà comunque accessibile tramite la cartella Cestino.)

-2
cat /dev/null > ~/.bash_history && history -c && exit

Il minimo che puoi fare è spiegare e formattare la tua risposta.
Paradosso

(1) Non è chiaro che l'OP voglia cancellare la memoria (cronologia) della shell dei comandi precedenti (la domanda riguarda il terminale ). Non puoi vederlo, ma 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 exitcomando non è garantito per chiudere la finestra del terminale.
G-Man dice "Reinstate Monica"
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.