web-dev-qa-db-fra.com

Comment effacer l'historique du terminal Gnome?

Lorsque nous utilisons la commande clear ou Ctrl+L dans le terminal, il efface le terminal mais nous pouvons toujours revenir en arrière pour voir les dernières commandes utilisées. Existe-t-il un moyen d'effacer complètement le terminal?

59
hpn

Vous pouvez utiliser tput reset.

Outre reset et tput reset vous pouvez utiliser le script Shell 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 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 tout brouillé. Le "écho ^ V ^ O" souvent conseillé ne fera que G0 courant, mais il n'y a aucune garantie que G0 pointe au 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), alors "tput reset" fonctionnera également.

69
Sachin Divekar

Vous pouvez utiliser la commande reset, qui réinitialisera les paramètres du terminal.

15
enzotib

Je sais que vous êtes sur un terminal gnome, mais je pensais que je répondrais avec un conseil pour ceux qui pourraient être (comme moi) sur un Mac:

Si vous utilisez Terminal.app ou iTerm.app puis Control+L défilera vers le haut pour que le terminal soit vide, mais Cmd+K réinitialisera réellement le terminal/effacera le défilement.

Ou, si vous pouvez définir des préférences de clavier pour votre terminal, vous pouvez peut-être attribuer quelque chose comme Ctrl+K saisir echo -e \\033c comme mentionné ci-dessus.

14
cwd

La réponse d'Anthon fonctionne dans KDE Konsole, mais pas urxvt. Dans urxvt, j'utilise reset depuis quelques années pour effacer le défilement (avec toutes les autres choses qu'il fait), et je n'étais pas convaincu que cela ne fonctionnait 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 sur OS X.

tput reset ne fonctionne dans aucun contexte AFAICT.

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

urxvt*keysym.C-S-K: command:\033c
9
ecloud

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

echo -e "\e[3J"
3
canon

[Ubuntu 16.04]

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

Il est utile, mais vous pouvez le supprimer si vous le souhaitez. Néanmoins, il sera créé à chaque fois que vous finirez d'utiliser le terminal.

Vous pouvez le supprimer manuellement de:

  • votre navigateur de fichiers.

  • le terminal: rappelez-vous qu'un nouveau fichier .bash_history sera créé lorsque vous fermerez le terminal (basé sur sa configuration par défaut).

Ou vous pouvez appeler une fonction personnalisée si vous enregistrez les fonctionnalités dont vous avez besoin dans un fichier lié à partir du bashrc .. vous pouvez modifier le bashrc lui-même si vous aimez y mettre 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 #ceci est mon fichier personnalisé

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

puis en bas d'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 mettez simplement la fonction dans le .bashrc si vous voulez, mais de cette façon, vous avez probablement besoin d'une instruction d'exportation après la fonction, je ne suis pas sûr et si le fichier est mis à jour, vous avez 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 .bashrc ou votre fichier "personnalisé".

2
Federico Gallo

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

bash

Ouvrez le fichier ~/.inputrc Et 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+X puis Ctrl+R pour recharger le fichier .inputrc dans le terminal actuel.

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

À 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 (copie-et-mémoire passée 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. La echo -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\n envoie 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.
    • La fonction history -d $((HISTCMD-1)) évite que ces deux commandes entrent dans l'historique.
  6. Le C-y (Ctrl+Y) colle le kill-ring stocké par la commande C-u.
  7. Le C-? (Ctrl+?) est équivalent à Backspace et 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'"
Il peut également être inséré dans votre fichier .cshrc Pour charger la liaison de clé à chaque nouveau terminal.
(Oui, c'est beaucoup plus simple qu'en 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_bindings Pour charger le raccourci clavier à chaque nouveau terminal.
(Oui, c'est beaucoup plus simple qu'en bash)

Pour moi, en utilisant PuTTY contre CentOS 7, clear ne laisse que la commande clear dans le scrollback, mais exécuter "clear && clear", deux instances de la commande clear en même temps, efface complètement le scrollback et me laisse sans barre de défilement. Essayez ça. C'est une solution étrange, mais aucune de celles-ci n'a effacé le défilement efficace, et cela le fait.

1
Zoltan Shapiro

Dans Fedora 30, la suppression de l'historique se fait en supprimant le fichier $ HOME/.bash_history. Le moyen le plus simple d'effacer le fichier d'historique du terminal via le clavier est:

  • Presse Alt+F4 pour fermer chaque fenêtre du terminal GNOME, parcourir les fenêtres via Alt+Tab ou Alt+Shift+Tab comme requis. (Toutes les fenêtres de terminal doivent être fermées car le fichier .bash_history est créé ou mis à jour lors de leur fermeture.)
  • Presse Alt+F2.
  • Tapez nautilus et appuyez sur la touche Enter pour ouvrir l'application (GNOME) Files (anciennement Nautilus).
  • Presse Ctrl+H si nécessaire pour afficher les fichiers cachés.
  • Tapez .bash_history (qui devrait apparaître dans la barre de recherche s'il est saisi 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.
  • Presse Shift+Delete pour supprimer définitivement le fichier. (Si vous utilisez la version non modifiée Delete à la place, le fichier .bash_history sera toujours accessible via le dossier Corbeille.)
0
Patrick Dark

Ajouté à ~/.inputrc pour lier la compensation complète à F12:

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