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?
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.
Vous pouvez utiliser la commande reset
, qui réinitialisera les paramètres du terminal.
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.
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
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"
[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é".
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)
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:
"\e[24~"
, Mappe la clé F12.C-k
(Ctrl+X) efface le kill-ring (copie-et-mémoire passée de bash).C-u
(Ctrl+U) envoie la ligne actuelle au kill-ring et l'efface.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
. echo -ne '\\ec\\e[3J'
Efface l'écran.history -d $((HISTCMD-1))
évite que ces deux commandes entrent dans l'historique.C-y
(Ctrl+Y) colle le kill-ring stocké par la commande C-u
.C-?
(Ctrl+?) est équivalent à Backspace et supprime l'espace inséré à l'étape 3 ci-dessus.Références:
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)
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.
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:
nautilus
et appuyez sur la touche Enter pour ouvrir l'application (GNOME) Files (anciennement Nautilus)..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).Ajouté à ~/.inputrc
pour lier la compensation complète à F12:
"\e[24~":'!echo -ne \047\\0033\\0143\047\r'