web-dev-qa-db-fra.com

Quelles commandes puis-je utiliser pour réinitialiser et effacer mon terminal?

J'ai utilisé la commande:

reset

effacer mon terminal. Bien que je sois certain que ce n’est pas ce que je devrais faire. Réinitialiser, comme son nom l'indique, réinitialise l'ensemble de votre terminal (change beaucoup de choses). Voici ce que je veux:

Je veux fondamentalement utiliser la commande clear. Cependant, si vous effacez et faites défiler l'écran vers le haut, vous obtenez toujours des tonnes de choses d'avant. En général, ce n’est pas un problème, mais j’observe les journaux bruts qui sont longs et je veux être sûr de ne regarder que le plus récent. Je sais que je pourrais utiliser more ou quelque chose du genre, mais je préfère cette approche.

62
sixtyfootersdude

Le tampon de défilement n'est pas une fonctionnalité de bash mais du programme terminal. Vous n'avez pas dit quel terminal vous utilisez.

Si vous utilisez xterm, vous pourrez peut-être effacer les lignes enregistrées en renvoyant ESC-c au terminal.

Cela peut ou non fonctionner avec le programme de terminal que vous utilisez.

Sur linux cela fonctionnera probablement:

echo -e '\0033\0143'

sur FreeBSD, echo n'accepte pas -e, vous pouvez donc essayer:

printf '\033\143'
56
Craig

Utilisez le bon outil pour chaque travail:

  • Utilisez clear pour effacer la fenêtre du terminal.

  • Utilisez reset pour réinitialiser votre terminal lorsqu'il est perturbé par des séquences de contrôle.

  • Utilisez cat uniquement lorsque vous souhaitez diffuser un grand nombre de données d’un endroit à un autre sans interruption .

  • Utilisez un programme de pagination tel que less ou most pour afficher les pages de sortie.

  • Utilisez tail -f /var/log/foo.log /var/log/bar.log pour regarder plusieurs fichiers journaux différents.

    • Avec GNU tail, l'option -F est préférable car elle peut continuer à suivre le fichier même lorsqu'un nouveau fichier apparaît à sa place, comme c'est le cas pour les fichiers journaux.
49
bignose

Juste pour fournir la réponse technique: reset réinitialise le terminal, comme s’il avait été rouvert de zéro. stty sane fera beaucoup de la même fonctionnalité (sans la réinitialisation). C'est la même chose que ^L (Ctrl + L) (irrc) et tput clear. Malgré les propos de l'affiche précédente (@grawity), clear ne génère pas beaucoup de nouvelles lignes. Il envoie la réinitialisation de TERM comme défini dans terminfo ou termcap. Pour moi, en utilisant gnome-terminal (xterm), il est identique à la commande Perl -e'print "\33[H\33[2J"'.

Si vous voulez simplement vider le tampon - par rapport à la réinitialisation de tout le terminal, essayez ceci tput reset. Il devrait être très rapide et faire ce que vous voulez. (Bien que vous devriez vraiment lire des fichiers avec less)

tput reset, envoie la valeur terminfo pour réinitialisation - sur mon terminal (xterm), elle est identique à Perl -e'print "\33c"'

21
Evan Carroll

La meilleure façon de tout effacer est probablement d'utiliser la fonction du terminal:

  • Konsole: Ctrl+Shift+K Affichage → Effacer le défilement et réinitialiser
  • Terminal GNOME: Édition → Réinitialiser et effacer
  • Mastic: Ctrl+right-click → Effacer le défilement

De cette façon, les deux mémoires tampons sont nettoyées et l'état du terminal est réinitialisé à exactement ce qu'il était au démarrage (ce qui peut être identique à l'utilisation de reset).

8
grawity

ITerm2 est un autre terminal, qui contient une séquence d'échappement assez étrange pour effacer le défilement. Dans un shell Bash, j'utilise quelque chose comme:

echo -ne '\033]50;ClearScrollback\a'

dans un script. En gros, il s’agit d’un caractère ESC suivi de "]50;ClearScrollback" puis d’un caractère BEL.

8
Sam Mason
 Moins -W + F foo.log 

+F est pour "suivre", semblable à tail -f mais vous permet de faire défiler aussi.

Tous les terminaux basés sur vte (GNOME, Xfce, Roxterm) et KDE Konsole vous permettent d’utiliser la molette de défilement pour faire défiler la liste dans less. Je trouve cela assez pratique.


Alternative à clear:

 Perl -e 'print "\ n" x512;' 

 xterm -e 'tail -f foo.log' 
3
grawity

Sur Mac OS X Terminal.app:

Affichage -> Effacer le défilement (ou command-K)

3
acajaja

Ce n'est pas un problème "Bash". Cela dépend du terminal que vous utilisez. Par exemple, j'utilise "iterm2" avec macbook pour connecter une machine linux distante. Vous pouvez utiliser "commande + K" pour nettoyer le tampon, ou dans le menu, choisissez "Edition" -> "Effacer le tampon".

2
Steven Huang

Pour nettoyer le tampon d’écran du matériel ATS dans FreeBSD, vous pouvez utiliser "vidcontrol - Utilitaire de contrôle et de configuration de la console système" avec le paramètre -C Effacer le tampon d’historique.

vidcontrol -C

la commande effacera tout le tampon d'écran de la console actuelle, au-dessus de ce que vous voyez actuellement. Vous voudrez peut-être "effacer" d'abord ou non - à vous de décider.

1
user

Pour effacer l'écran de la console et le tampon de défilement lors de l'exécution de PuTTY, cela fonctionne pour moi:

echo -en "\ec\e[3J"

Il s’agit en fait de 2 séquences "Esc" agissant indépendamment ... Elles peuvent être utilisées dans l’un ou l’autre des ordres suivants:

# clears the console screen, but not the scrollback buffer
# this is actually the escape code to "reset" the terminal
echo -en "\ec"

# clears the scrollback buffer, but not the console screen
# screen content remains, and cursor position remains at its last position
echo -en "\e[3J"

Utiliser echo -en "\ec" qui réinitialise le terminal peut modifier certains de vos autres paramètres de terminal. Au lieu de "Réinitialiser", vous pouvez faire ceci:

# position the cursor to "Home" (Top Row, First Column)
echo -en "\e[H"

# Erase down: clear the screen from the cursor down to the bottom of the screen.
echo -en "\e[J"

# Note: this is supposed to clear the screen and position the cursor to home,
# but it didn't work like that for me. It cleared the entire screen (above and 
# below the cursor), but left the cursor at its last position.
echo -en "\e[2J"

# putting everything together
echo -en "\e[H\e[J\e[3J"

Vous pouvez mettre cela dans un script Shell et cela fonctionne très bien.


Au cas où il y aurait des dépendances du système:

J'utilise PuTTY Connection Manager (version 0.7.1 BETA (version 136)), avec PuTTY (version 0.60).

Dactylographie:

echo \"$TERM\"; /bin/sh --version

rapports:

"xterm"
GNU bash, version 4.1.2(1)-release-(x86_64-redhat-linux-gnu) ...
1
Kevin Fegan

Si vous voulez être sûr de regarder les entrées les plus récentes d'un fichier journal, il est probablement préférable d'utiliser tail au lieu de clear/cat que je suppose que vous utilisez.

0
Josh K

Hmmm. Je suppose que si vous utilisez la konsole, vous n’avez pas de chance. Auparavant, vous pouviez simplement "effacer le défilement". Konsole ne vous laissera plus faire ça. Vous devez également le réinitialiser pour qu'il tue tous les programmes que vous exécutiez. Je suppose que j'ai besoin d'un nouveau programme de terminal ......

0
Bruce