13 votes

Bash sur Ubuntu sur Windows : Effacer tout le texte, TOUT le texte

Récemment, je suis passé d'un Mac à un PC Windows 10 et j'expérimente le nouveau sous-système Linux de Microsoft (alias "Bash on Ubuntu on Windows"). La plus grande irritation que je subis en l'utilisant quotidiennement est de dégager un grand mur de texte. Peut-être que d'autres peuvent vivre avec leurs écrans encombrés de texte, mais cela me rend fou. Je ne peux gérer que les commandes qui laissent de grandes quantités de texte une par une, ce qui signifie que je préfère simplement pouvoir faire défiler l'écran vers le haut pour voir où commence le résultat de la dernière commande, puis, lorsque j'en ai terminé, l'effacer et passer à la commande suivante. Je n'aime pas avoir à chercher dans plusieurs fichiers de sortie de commande pour trouver où commence la sortie de la dernière commande exécutée. Oui, je sais que ce n'est pas si difficile, je suppose que je suis gâté par l'utilisation de l'application Terminal de Mac OS X où je pouvais entrer Ctrl+K pour tout effacer instantanément.

Dans l'application Windows Bash/Ubuntu, la méthode la plus proche de l'effacement du texte est Ctrl+L, mais elle n'efface que le texte de l'écran actuellement visible, et non l'intégralité du retour arrière. L'utilisation de la commande "reset" seule ne fonctionne pas. Je dois faire défiler jusqu'en haut, faire Ctrl+L, puis entrer "reset" pour me débarrasser de tout le texte. C'est déjà assez ennuyeux, mais en plus de cela, la commande "reset" rend toujours la fenêtre plus étroite que mes préférences, la fixant à 80 colonnes de large. Mes préférences, telles qu'elles sont définies en cliquant sur l'icône de l'application puis sur "Propriétés", prévoient une largeur de 145 colonnes. J'ai même essayé d'aller dans "Défauts" et de régler la largeur à 145, mais la commande "Réinitialiser" la fait toujours passer à 80. Cela doit être quelque chose qui est configuré quelque part dans le sous-système Ubuntu. Cette largeur est trop étroite pour moi.

La réponse la plus votée aquí suggère d'utiliser le terminal GNOME qui permet de créer un raccourci "reset and clear", mais la personne qui a posé la question utilisait le système Ubuntu complet, pas le sous-système Ubuntu de Windows, donc je suis un peu sceptique. Cela fonctionnerait-il sur ce dernier ? Je vais peut-être devoir voir si c'est faisable. La deuxième réponse suggère de créer un alias "cls" comme ceci :

alias cls="echo -ne '\033c'"

Mais hélas, cela n'a pas fonctionné. J'ai essayé d'exécuter le contenu de l'alias séparément et cela n'a rien fait non plus, idem pour le remplacement de "echo -ne" par "printf".

Mon dernier espoir est la troisième réponse sur cette page : "réglez votre tampon sur 0 ligne". Je suppose que c'est une configuration du sous-système Ubuntu que je dois modifier, ou peut-être un fichier de configuration que je dois placer dans mon répertoire personnel (j'aurais aimé qu'ils expliquent exactement ce qu'ils veulent dire). Dans tous les cas, aller dans les "Propriétés" de l'application Windows et modifier les paramètres de la mémoire tampon n'a pas aidé.

Quant à savoir quel programme de terminal est utilisé, l'écho de $TERM me donne "xterm". Oh, et la version d'Ubuntu est 14.04. (J'ai entendu dire que la prochaine mise à jour majeure de Windows 10 vous donnera la possibilité de passer à une Ubuntu plus récente, mais je n'ai pas envie de faire le saut en installant la "preview" de Windows Insider).

10voto

La commande la plus fiable et portable que j'ai trouvé 1 est :

printf '\033c\e[3J'

Il est clair que c'est trop long et complexe de le taper à chaque fois. La solution est pour définir un alias afin qu'il puisse être exécuté en utilisant un nom beaucoup plus simple. Ma suggestion est de choisir cls qui est le nom que porte cette commande dans les shells cmd de Windows.
Pour régler cls comme alias, entrez cette ligne :

alias cls="printf '\033c\e[3J'"

Ceci activera l'alias dans le Shell actuel. Si vous voulez l'avoir toujours à votre disposition à chaque fois que vous ouvrez un nouveau terminal, ajoutez cette ligne à votre fichier .bashrc dans votre répertoire personnel.


1. Je suggérais précédemment d'utiliser clear && echo -en "\e[3J" comme expliqué à Stack Overflow mais pour certains utilisateurs, cela ne fonctionne pas, j'ai donc mis à jour ma réponse.

4voto

William Beaumont Points 301

Je n'ai pas de réponse pour le terminal Ubuntu par défaut de Windows. D'après le lien de DavidPostill, il semble que l'équipe de développement soit consciente du problème, donc je suppose qu'il sera corrigé dans une prochaine version. En attendant, je suis simplement passé à l'utilisation de MinTTY pour WSL ( https://github.com/mintty/wsltty ). La commande "reset" fonctionne parfaitement dans ce terminal, elle efface complètement toute la sortie texte tout en laissant les dimensions de la fenêtre intactes.

0voto

Rek Points 101

Vous pouvez créer un fichier batch pour effectuer cette opération lorsque vous saisissez exit dans Bash

@echo off
powershell while (1) {bash ~ ; cls}

Enregistrez le fichier comme un .bat et exécutez-le, pour le quitter fermez la fenêtre ou appuyez sur Alt + F4

J'ai aussi fait le .bat et l'a converti en un fichier .exe le fichier, le téléchargement est disponible sur mon Google Drive aquí .

Je l'ai testé environ 4 fois maintenant, il fonctionne parfaitement.

Si le téléchargement ne fonctionne pas, veuillez me le signaler.

Vous pouvez modifier le lien dans le menu de démarrage vers ce fichier bat ou exe en éditant les propriétés dans C:\Users\usernamehere\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X