Lorsque nous utilisons clear
command 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?
Lorsque nous utilisons clear
command 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?
Réponses:
Vous pouvez utiliser tput reset
.
En plus reset
, tput reset
vous 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.
tput reset
est plus rapide que reset
dans Ubuntu 16.04, au moins
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.app
ou iTerm.app
alors Control+L
fera défiler vers le haut afin que le terminal semble vide, mais Cmd+K
ré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+K
entrer, echo -e \\033c
comme indiqué ci-dessus.
Cmd+K
c'est tout ce que je voulais. ty
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
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.
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.)
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+ 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:
"\e[24~"
, mappe la clé F12.C-k
( Ctrl+ X) efface le kill-ring (la mémoire copier-coller 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 ces deux commandes d'entrer dans l'histoire.C-y
( Ctrl+ Y) colle le kill-ring stocké par la C-u
commande.C-?
( Ctrl+ ?) équivaut à Backspaceet 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'"
Vous pouvez également l'insérer dans votre .cshrc
fichier pour charger la liaison de clé à chaque nouveau terminal.
(Oui, c'est beaucoup plus simple que dans 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 la liaison de clé à chaque nouveau terminal.
(Oui, c'est beaucoup plus simple que dans bash)
[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é".
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.
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:
nautilus
et appuyez sur la Entertouche pour ouvrir l’application (GNOME) Files (anciennement Nautilus)..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).cat /dev/null > ~/.bash_history && history -c && exit
history -c
a é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 exit
n'est pas garanti qu'une seule commande ferme la fenêtre du terminal.