Comment effacer l'historique des terminaux Gnome?

59

Lorsque nous utilisons clearcommand ou Ctrl+ Lin terminal, cela efface le terminal mais nous pouvons toujours revenir en arrière pour voir les dernières commandes utilisées. Existe-t-il un moyen de vider complètement le terminal?

hpn
la source
Cela dépend du terminal, et aucune des réponses ne répond à cela.
Thomas Dickey

Réponses:

69

Vous pouvez utiliser tput reset.

En plus reset, tput resetvous pouvez utiliser le script suivant.

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

Cela envoie des caractères de contrôle Esc-Cà la console qui réinitialise le terminal.

Mots-clés Google: Séquences de contrôle de la console Linux

man console_codes dit:

La séquence ESC c provoque une réinitialisation du terminal, ce que vous voulez si l'écran est tronqué. L'écho souvent conseillé "echo ^ V ^ O" ne fera que rendre G0 actuel, mais rien ne garantit que G0 pointe vers le tableau a). Dans certaines distributions, il existe un programme reset (1) qui ne fait que "echo ^ [c". Si votre entrée terminfo pour la console est correcte (et a une entrée rs1 = \ Ec), "tput reset" fonctionnera également.

Sachin Divekar
la source
1
Quelle est la différence entre reset et tput reset?
Toothrot
tput resetest plus rapide que resetdans Ubuntu 16.04, au moins
Iván Rodríguez Torres
5
-1, vous pouvez toujours voir le tampon si vous faites défiler vers le haut
João Pimentel Ferreira
15

Vous pouvez utiliser la resetcommande qui réinitialisera les paramètres du terminal.

enzotib
la source
15

Je sais que vous êtes sur un terminal gnome, mais je pensais pouvoir répondre par un conseil aux autres qui pourraient être (comme moi) sur un Mac:

Si vous utilisez Terminal.appou iTerm.appalors Control+Lfera défiler vers le haut afin que le terminal semble vide, mais Cmd+Kréinitialisera le terminal / effacera le défilement arrière.

Ou, si vous pouvez définir les préférences de clavier pour votre terminal, vous pourrez peut-être attribuer quelque chose comme Ctrl+Kentrer, echo -e \\033ccomme indiqué ci-dessus.

cwd
la source
2
Cmd+Kc'est tout ce que je voulais. ty
Gaurav Gandhi
9

La réponse d'Anthon fonctionne dans KDE Konsole, mais pas dans urxvt. Dans urxvt, j'utilise reset depuis quelques années pour effacer le scrollback (avec toutes les autres choses qu'il fait) et je ne suis pas convaincu que cela ne fonctionne pas dans Konsole. Alors maintenant, pour Linux, j'ai un nouvel alias:

alias allclear='clear; echo -e "\033c\e[3J"'

Mais cela ne fonctionne pas sous OS X.

tput reset ne fonctionne dans aucun contexte AFAICT.

Dans KDE Konsole, ctrl- shift- kefface le défilement (y compris l’invite du shell en cours, qui est donc complètement vide). Dans iTerm ou le terminal d’Apple sous OS X, cmd- shift- kefface également le défilement. Pour ajouter cette fonctionnalité à urxvt, ajoutez ceci à ~ / .Xresources:

urxvt*keysym.C-S-K: command:\033c
éclairs
la source
Cette réponse est la réponse qui plaira à tous ceux qui utilisent Linux Bash s’ils attendent le même résultat qu’ils obtiendraient sur un Mac en appuyant sur commande + K. Je l’ai transformée en commande autonome en ajoutant la fonction suivante au bas de la page. de /etc/bash.bashrc (puis déconnectez-vous du serveur, reconnectez-vous et tout se passera via la commande allclear): allclear(){`echo" Effacement du terminal et défilement en arrière ... "` `sleep 1.5`` clear; echo -e "\ 033c \ e [3J" ` }` Edit: Impossible de faire fonctionner le formatage. Si quelqu'un est capable de l'éditer pour qu'il soit lisible, je l'apprécierais.
KLaw
3

J'ai trouvé cela sur le net il y a quelques années et fonctionne bien pour moi. Il efface complètement le terminal sans historique de défilement.

echo -e "\e[3J"
canon
la source
2

J'ai cartographié F12pour effacer l'écran dans chacun des coquillages suivants: bash , csh et coquille de poisson . Ma commande est différente de toutes les précédentes car elle conserve tout ce que vous avez déjà saisi dans la ligne en cours.
(Remarque: toutes les configurations ci-dessous dépendent du terminal, mais j'espère qu'elles fonctionneront pratiquement partout.)

frapper

Ouvrez le fichier ~/.inputrcet insérez la ligne suivante:

"\e[24~": "\C-k \C-uecho -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\n\C-y\C-?"

Pour que la nouvelle liaison de clé soit disponible, ouvrez un nouveau terminal ou tapez Ctrl+ Xpuis Ctrl+ Rpour recharger le fichier .inputrc dans le terminal actuel.

Explication
Le fichier ~ / .inputrc contrôle les raccourcis clavier du terminal bash.

A propos de la ligne:

  1. La première partie de la ligne "\e[24~", mappe la clé F12.
  2. Le C-k( Ctrl+ X) efface le kill-ring (la mémoire copier-coller de bash).
  3. L'espace évite un bip dans la commande suivante.
  4. Le C-u( Ctrl+ U) envoie la ligne actuelle au kill-ring et l’efface.
  5. Le echo -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\nenvoie deux commandes groupées au terminal. Ils sont séparés par ;et terminés par \n.
    • Le echo -ne '\\ec\\e[3J'efface l'écran.
    • Le history -d $((HISTCMD-1))évite ces deux commandes d'entrer dans l'histoire.
  6. Le C-y( Ctrl+ Y) colle le kill-ring stocké par la C-ucommande.
  7. Le C-?( Ctrl+ ?) équivaut à Backspaceet supprime l'espace inséré à l'étape 3 ci-dessus.

Références:

csh

Tapez la commande ci-dessous.
bindkey -c "^[[24~" "echo -ne '\ec\e[3J'"
Vous pouvez également l'insérer dans votre .cshrcfichier pour charger la liaison de clé à chaque nouveau terminal.
(Oui, c'est beaucoup plus simple que dans bash)

coquille de poisson

Tapez la commande ci-dessous.
bind -k f12 "echo -ne '\ec\e[3J'; commandline -f repaint"
Vous pouvez modifier et enregistrer la fonction fish_user_key_bindingspour charger la liaison de clé à chaque nouveau terminal.
(Oui, c'est beaucoup plus simple que dans bash)

Akira Cleber Nakandakare
la source
2

[Ubuntu 16.04]

Le fichier .bash_history est créé dans le répertoire personnel de l'utilisateur une fois le terminal fermé

C'est utile, mais vous pouvez le supprimer si vous le souhaitez. Néanmoins, il serait créé chaque fois que vous finissez d'utiliser le terminal.

Vous pouvez le supprimer manuellement de:

  • votre navigateur de fichiers.

  • le terminal: n'oubliez pas qu'un nouveau fichier .bash_history sera créé à la fermeture du terminal (dans sa configuration par défaut).

Ou vous pouvez appeler une fonction personnalisée si vous enregistrez la fonctionnalité dont vous avez besoin dans un fichier lié depuis le bashrc .. vous pouvez éditer le bashrc lui-même si vous aimez y insérer votre code, mais les exemples suivants sont dans un fichier séparé.

Honnêtement, cela ne m’est pas utile, mais si vous souhaitez supprimer l’historique des commandes avant de quitter, vous pouvez le faire:

.bash_custom #c’est mon fichier personnalisé

blotout() {
    HISTSIZE=0
    rm $HOME/.bash_history
    exit
}

puis au bas de ajouter le nom et le chemin de mon fichier
.bashrc # c'est le fichier de configuration pour le bash (je pense)

# existent code
#...
#..

# import user customizations
source $HOME/.bash_custom

et c'est tout.

MAIS, pour faire exactement ce que vous voulez, vous avez juste besoin de cette fonction dans votre fichier personnalisé et le lier:

refresh() {
        tput reset
        H=HISTSIZE
        HISTSIZE=0
        HISTSIZE=H
}

Ou tout simplement mettre la fonction dans le fichier .bashrc si vous voulez, mais de cette façon, vous aurez probablement besoin d'une instruction d'exportation après la fonction. Je ne suis pas sûr et si le fichier mis à jour est probablement perdu vos fonctions. Je ne suis pas sûr de cela aussi: RÉ .
N'oubliez pas que vous devez redémarrer le terminal lorsque vous modifiez le fichier .bashrc ou votre fichier "personnalisé".

Federico Gallo
la source
1

Pour moi, utiliser PuTTY contre CentOS 7, clear ne laisse que la commande clear dans le défilement, mais exécuter "clear && clear", deux instances de la commande clear en même temps, efface complètement le défilement et ne me laisse pas de barre de défilement. Essayez ça. C'est une solution étrange, mais aucune de celles-ci ici n'a effacé le défilement de manière aussi efficace, ce qui est le cas.

Zoltan Shapiro
la source
0

Ajouté à ~/.inputrcpour lier le nettoyage complet à F12:

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

Dans Fedora 30, l’historique est supprimé en supprimant le fichier $ HOME / .bash_history. Le moyen le plus simple d'effacer le fichier d'historique du terminal à l'aide du clavier est le suivant:

  • Appuyez sur Alt+ F4pour fermer chaque fenêtre du terminal GNOME, en passant d’une fenêtre à l’autre par les touches Alt+ Tabou Alt+ Shift+ Tabselon vos besoins. (Toutes les fenêtres du terminal doivent être fermées car le fichier .bash_history est créé ou mis à jour à la fermeture.)
  • Appuyez sur Alt+ F2.
  • Tapez nautiluset appuyez sur la Entertouche pour ouvrir l’application (GNOME) Files (anciennement Nautilus).
  • Appuyez sur Ctrl+ Hsi nécessaire pour afficher les fichiers cachés.
  • Tapez .bash_history(qui devrait apparaître dans la barre de recherche s'il est tapé immédiatement après l'ouverture de la fenêtre; sinon, la barre de recherche est accessible via Ctrl+ L).
  • Appuyez sur la flèche vers le bas pour sélectionner le fichier, qui devrait être le seul résultat de la recherche.
  • Appuyez sur Shift+ Deletepour supprimer définitivement le fichier. (Si vous utilisez Deleteplutôt la clé non modifiée , le fichier .bash_history sera toujours accessible via le dossier Corbeille.)
Patrick Dark
la source
-2
cat /dev/null > ~/.bash_history && history -c && exit
Frapper
la source
Le moins que vous puissiez faire est d’expliquer et de formater votre réponse.
Paradox
(1) Il n’est pas évident que l’opérateur veuille effacer la mémoire (historique) du shell des commandes précédentes (la question concerne le terminal ). Vous ne pouvez pas le voir, mais cela history -ca été présenté dans deux réponses précédentes, et elles ont été supprimées car elles n'étaient pas des réponses correctes à la question. (2) Bien que la fermeture de la fenêtre du terminal efface (probablement) la mémoire des commandes précédentes du terminal, il est loin d'être évident que le PO veut le faire. … Et PS Il exitn'est pas garanti qu'une seule commande ferme la fenêtre du terminal.
G-Man dit 'Réintégrez Monica'