Comment vider vraiment le terminal?

388

Je peux lancer la clearcommande ou appuyer sur Ctrl+ Lpour effacer le terminal Ubuntu actuel, mais cela déplace simplement la sortie précédente vers le haut et si vous utilisez le défilement de la souris ou les touches PgUPet PgDown, il est difficile de distinguer où se termine la sortie de la commande précédente et où commence la sortie de la commande actuelle.

Est - il un moyen de vraiment effacer la borne donc je verrai pas de commande précédente?

Stann
la source
11
Appuyez deux fois sur Ctrl + L et vous obtenez un blanc!
Pandya

Réponses:

458

Oui, la commande que vous recherchez est

reset

Contrairement à + clearou à Ctrl+ L, resetle terminal sera complètement réinitialisé au lieu d’effacer tout simplement l’écran. Cependant, il ne réinstanciera pas le shell (bash). Cela signifie que l' état de bash est le même qu'avant, comme si vous effaciez simplement l'écran.

Comme @Wallacoloo le mentionne dans les commentaires, cette commande devrait faire la même chose plus rapidement:

tput reset

Des autres réponses:

  • Vous pouvez définir un raccourci clavier vers resetle terminal, comme expliqué par towolf .

  • Si vous utilisez Kubuntu et que votre terminal est Konsole, vous devez aller dans Édition → Effacer l'historique , car resetcela ne fonctionne pas de la même façon, comme le note UncleZeiv .

Stefano Palazzo
la source
9
Cela n’importe probablement pas pour la plupart des utilisateurs, mais le comportement de resetdépend du terminal.
cthom06
2
Personnellement, cela ne me dérange pas que quelque chose reste "en place" le long du scroller lorsque je frappe ^L. Je ne vois pas (c'est ce que je veux!), Je ne le sens pas, et si je soudain besoin de restaurer ce qui était là - aucun problème. reseten revanche, c'est un outil beaucoup plus difficile - je l'emploierai en cas de problème avec le terminal - comme lorsque des séquences d'échappement étranges ont complètement endommagé l'affichage.
ulidtko
15
@ulidtko: il est important que vous exécutiez des sessions consécutives de programmes avec des tonnes de sorties. Si vous faites défiler en arrière, il est facile de ne pas savoir quelle exécution a imprimé quelque chose. Je sais parfaitement que des solutions plus sophistiquées pourraient être utilisées dans ces cas, mais il s’agit néanmoins d’un scénario qui se produit assez souvent lors de sessions de débogage rapides et sales.
UncleZeiv
7
Il y a aussi tput resetce qui visiblement fait la même chose, mais se termine instantanément (alors que cela resetpeut prendre environ 2 secondes avant que l'invite ne réapparaisse).
Ponkadoodle
1
Cela provoque le redimensionnement de ma fenêtre putty.exe, ce serait bien de nettoyer sans que cela se produise.
void.pointer
102

Je cherchais cela pendant un moment et j'ai trouvé un génie qui a posté ceci:

clear && printf '\e[3J'

Efface tout le tampon d'écran, très propre. Fonctionne sous OS X et pense que cela fonctionne bien sur la plupart des terminaux * nix.

Pour les curieux, cette partie '\e[3J'est une commande d'échappement terminal.

Goran
la source
2
Hmm, fonctionne dans xterm, Konsole et Linux VT, mais pas dans gnome-terminal ...
Ruslan
1
Merci, fonctionne très bien sur mon Mac - un vrai style Bash m'a vraiment manqué reset.
JohnnyCoder
9
Merci, c'est super utile! Qu'est-ce que ça printf '\e[3J'veut dire? Comment ça nettoie le tampon?
Filip Spiridonov
4
faites attention à l'aliasing reset- cela fait plus que vider le terminal. par exemple, si vous imprimez accidentellement un fichier binaire avec des ordures aléatoires qui corrompt le terminal (par exemple, désactive l’écho des caractères saisis), vous resetpourrez généralement résoudre ce problème. Bien sûr, les alias sont acceptables tant que vous savez comment \overrideutiliser une commande alias-shadowed.
RubyTuesdayDONO
4
C’est la seule solution qui permette de supprimer le défilement de Putty lors de l’accès à certains SSH via Winders.
Dhaupin
46

Vous pouvez également assigner un raccourci dans gnome-terminal en allant dans Edition → Raccourcis clavier . J'utilise Shift+ Ctrl+ Alt+ C.

réinitialiser et effacer le raccourci

torse
la source
+1 J'ai toujours la barre de menu cachée; Ainsi, même après des années et des années d'utilisation de gnome, je n'ai jamais pensé chercher cela. Merci :-)
Stefano Palazzo
3
«Réinitialiser» ne fait rien pour moi et «Réinitialiser et effacer» efface tout mais ne réaffiche pas l'invite. Aucune de ces entrées de menu ne se comporte comme la commande "reset" d'un terminal.
Hibou57
Comme @ Hibou57 l'a dit, mon raccourci clavier pour "Réinitialiser" ne semble rien faire. Cette fonctionnalité est-elle cassée en 14.04?
Michael Martin-Smucker
“Cette fonctionnalité est-elle cassée dans 14.04?”: C'est pareil avec 12.04.
Hibou57
1
@ Hibou57 "Reset and Clear" ne devrait pas ré-afficher l'invite, mais si vous appuyez sur Entrée ensuite, il devrait ré-afficher l'invite. Est-ce que ça marche pour toi?
Don Hatch
19

Cross poster ma réponse de stackoverflow .

Utilisez la commande suivante pour faire un écran clair au lieu d'ajouter simplement de nouvelles lignes ...

printf "\033c"

oui c'est un 'printf' à l'invite bash.

Vous voudrez probablement définir un alias cependant ...

alias cls='printf "\033c"'

Explication

\033 == \x1B == 27 == ESC

Cela devient <ESC>cdonc le code d'échappement VT100 pour la réinitialisation du terminal. Voici quelques informations supplémentaires sur les codes d'échappement du terminal.

Modifier

Voici quelques autres façons de le faire ...

printf "\ec" #\e is ESC in bash
echo -en "\ec" #thanks @Jonathon Reinhart.
# -e    Enable interpretation of of backslash escapes
# -n    Do not output a new line

KDE

Ce qui précède ne fonctionne pas sur la console KDE (appelée Konsole) mais il y a de l'espoir! Utilisez la séquence de commandes suivante pour effacer l'écran et le tampon de défilement arrière ...

clear && echo -en "\e[3J"

Ou peut-être utiliser l'alias suivant sur KDE ...

alias cls='clear && echo -en "\e[3J"'

J'ai reçu la commande d'effacement de défilement à partir d' ici .

Autocrate
la source
18

lancez cette commande:

reset

Cela a le même effet que de lancer un nouveau terminal.

dv3500ea
la source
6
Lors de l'utilisation de mastic, après avoir exécuté reset, je peux toujours faire défiler et voir les choses précédentes. Est-ce un problème avec PuTTY plutôt que reset?
Svish
@svish - ce n'est qu'un problème ou une décision concernant la mise en œuvre du mastic.
Belacqua
@jgbelacqua, Deal :)
Svish
Travaillé avec le terminal MAC OS
Bira
2
@Bira Non, resetne supprime pas le défilement sur macOS 10.14 Mojave. Vous pouvez essayer seq 100; resetde voir le défilement toujours là. Sur le terminal macOS, Cmd+Kpouvez effacer l'écran et faire défiler.
Johnny Wong le
8

Mon préféré est printf "\ec". Cela peut aussi être printf "\033c"ou printf "\x1bc". C’est une séquence d’échappement ansi qui efface miraculeusement l’écran et le tampon de la sortie du terminal (pour la plupart des terminaux standard dans lesquels j’ai travaillé, il semble - je sais que cela fonctionne comme gnome-terminal, terminateur, xterm, etc. sur Ubuntu-like Linux)

Je sais que cela fonctionne dans Linux Mint et Ubuntu 14.04, donc je ne sais pas pourquoi les gens ajoutent et préparent des choses comme clear && echo -ne "\033c. printf "\ec"a toujours travaillé pour moi.

En outre, dans mon .bashrcj'ai une liaison comme ceci:

bind -x '"\C-t": printf "\ec"';

Maintenant je presse ctrlttout le temps.

dylnmc
la source
Savez-vous comment créer un mappage à l'aide de la touche Windows? Cet extrait est vraiment génial, fonctionne exactement comme Command-K sur mac. Je vous remercie.
Niloct
@Niloct vous pouvez voir si le terminal le prend en charge xev(tapez simplement xevun terminal dans une session x). D'après ce que je pourrais dire, urxvt ne le supporte pas; Bien que je n'aie pas essayé dans un tty, je suis convaincu qu'il ne serait pas pris en charge. Je doute aussi que xterm ou gnome-terminal le supporte. C'est difficile avec ansi-évasions. Salut et désolé pour la réponse tardive.
dylnmc
D'accord @dylnmc, je l'apprécie. Merci pour le commentaire.
Niloct
5

Cela dépend vraiment, si vous utilisez Konsolepar exemple, même resetcela ne vous empêche pas de faire défiler au-delà de la première ligne. Dans ce cas, vous devez utiliser certaines fonctionnalités du terminal que vous utilisez. Car Konsolec'est Edit > Clear History.

UncleZeiv
la source
3

J'ai trouvé les éléments suivants assez réussis avec Kubuntu:

alias clc="echo -en '\033c\033[3J'"

Vous pouvez vous clsen tenir à la tradition Windows, utiliser la version de Matlab clcou une version de votre choix. Bonne chance!

Charles Bell
la source
2

Une autre alternative à la réponse @ Hibou57:

# The Octal Way
alias clear="echo -e '\033c\c'"

OU

# The Hex Way
alias clear="echo -e '\x1b\c'"

Fondamentalement, cela aura exactement le même effet, cela imprimera le ^[caractère (ce qui effacera votre terminal) et ne produira pas la nouvelle ligne de fin.

TwystO
la source
Légère correction: elle imprime le ^[caractère (ESC) suivi du ccaractère, pas seulement le ^[caractère seul. Combinés, ils constituent le code de terminal "RIS", ce qui provoque une réinitialisation. Plus d'infos: xfree86.org/4.8.0/ctlseqs.html
jwd