423 votes

Effacer un écran de terminal pour de vrai

Utilisation de la clear sur le terminal ne fait que tromper l'utilisateur en lui faisant croire que l'écran a été effacé... vous pouvez toujours voir la sortie des commandes précédentes lorsque vous faites défiler l'écran avec la souris. Cela rend la vie difficile lorsque vous êtes noyé dans un tsunami de texte.

Les diverses solutions (escape code, etc.) que l'on peut trouver sur Internet ne sont que des variantes de ce que la commande clear fait déjà.

Alors comment effacer le contenu d'un terminal sous Linux pour de vrai ?

45 votes

Je classerais ceci dans la catégorie des "outils logiciels couramment utilisés par les programmeurs" (mentionnés dans la FAQ comme valables).

5 votes

Ce que vous demandez en réalité est "Comment puis-je effacer le tampon de défilement du terminal ?", ce qui est indépendant du shell (Bash) ou d'Ubuntu.

0 votes

@spiderplant0 probablement parce que AskUbuntu est le bon endroit pour cela - pour le moment. Il n'existait pas quand la question a été posée, donc il a été fermé comme hors sujet, même si ce n'est pas le cas.

543voto

Sandeep Datta Points 7344

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

printf "\033c"

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

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

alias cls='printf "\033c"'

Explication

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

Cela devient donc <ESC>c qui est le code d'échappement VT100 pour réinitialiser le terminal. Aquí Voici quelques informations supplémentaires sur les codes d'échappement des terminaux.

Modifier

Voici quelques autres façons de procéder...

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 retour de défilement...

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

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

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

J'ai obtenu la commande d'effacement par défilement à partir de aquí .

4 votes

Il s'agit en fait d'un terminal spécifique. "\033c" es ESC c qui est la séquence d'échappement VT-XXX pour "Full Reset (RIS)". Presque tous les terminaux que les gens utilisent de nos jours sont compatibles VT, mais si vous vous retrouvez à utiliser un terminal bizarre, cela pourrait ne pas fonctionner. La réponse de @vpit3833 a plus de chances de fonctionner si TERM est défini correctement.

2 votes

printf est un buildin Bash (il est vrai que c'est aussi un binaire séparé, mais les buildins ont la priorité et la plupart des shells modernes disposent de printf ).

0 votes

@SDX2000 Est-ce que cela efface votre tampon de défilement ? Ce n'était pas une exigence ? BTW si c'est pour surveiller la sortie d'un programme bavard, ma façon préférée de le faire est de courir (ou tail) dans emacs, puis j'ai créé une liaison qui marque et tue le tampon entier.

232voto

vpit3833 Points 4435

Essayez reset . Cela efface l'écran du terminal, mais les commandes précédentes sont accessibles par les flèches ou toute autre combinaison de touches que vous avez.

3 votes

Merci ! Mais cela efface tout, y compris l'invite. Voir ma réponse pour une solution qui ne fait pas cela.

5 votes

@SDX2000 Les deux effacent l'invite, puis le shell en génère une nouvelle. Le seul inconvénient de reset est qu'il semble être un peu plus lent (probablement parce qu'il fait plus que simplement émettre ESC c) mais il est plus portable.

0 votes

J'ai essayé de réinitialiser mais c'était si lent que j'ai supposé que l'invite avait été effacée en même temps que tout le reste. Je préfère toujours utiliser ESC c puisque je n'utiliserai probablement jamais un autre terminal que celui d'Ubuntu. Bien que reset pourrait s'avérer utile un jour lorsque je déboguerai une machine distante via le port série, etc.

77voto

cuspblue Points 50
tput reset

Cela fera l'affaire !

4 votes

S'exécute beaucoup plus rapidement que le simple reset mais il fait toujours l'affaire !

2 votes

Plus rapide que juste reset

1 votes

Explication de la raison pour laquelle il est plus rapide : Pourquoi le reset comprend-elle un délai ?

9voto

Si cela vous est utile, je crée un tutoriel sur la façon de créer un raccourci de terminal dans Ubuntu ou Debian avec la commande echo -en "\ec" . Cette commande, comme Jonathon Reinhart l'a fait remarquer à juste titre, efface totalement l'écran du terminal.

3voto

The111 Points 2103

Avec KDE et Ubuntu 12.04 LTS et le terminal "Konsole", aucune des réponses postées ne fonctionne. Cependant, le raccourci clavier par défaut CTRL+Shift+X fonctionne ! Source :

https://bugs.kde.org/show_bug.cgi?id=288913

3 votes

Cela a été changé en CTRL+Shift+K dans les versions ultérieures de KDE : bugs.kde.org/show_bug.cgi?id=282593

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X