[Macos] Comment effacer la sortie précédente dans Terminal sous Mac OS X?



Answers

Une meilleure façon ...

Si vous utilisez l'application OSX Terminal (comme indiqué par l'OP), une meilleure approche (merci à https://apple.stackexchange.com/a/113168 ) est juste ceci:

clear && printf '\e[3J'

ce qui efface le tampon de retour en arrière. Et c'est plus rapide que d'exécuter AppleScript. Il existe également d'autres options, voir https://apple.stackexchange.com/a/113168 pour plus d'informations.

réponse originale

La réponse AppleScript donnée dans ce fil fonctionne, MAIS elle a l'effet secondaire désagréable d'effacer TOUTE fenêtre de terminal qui se trouve être active. C'est surprenant si vous exécutez le script dans une fenêtre et essayez d'obtenir du travail dans un autre!

Vous évitez cela en affinant l'AppleScript pour effacer uniquement l'écran s'il est le plus en avant en faisant cela (tiré de https://apple.stackexchange.com/a/31887 ):

osascript -e 'if application "Terminal" is frontmost then tell application "System Events" to keystroke "k" using command down'

... mais comme quand ce n'est pas la fenêtre courante, la sortie s'empilera jusqu'à ce qu'elle redevienne active, ce qui n'est probablement pas ce que vous voulez.

Question

Je connais la commande clear qui «efface» l'écran actuel, mais il le fait simplement en imprimant beaucoup de sauts de ligne - le contenu effacé ne fait que défiler vers le haut.

Y at-il un moyen d'effacer complètement toutes les sorties précédentes du terminal afin que je ne puisse pas l'atteindre même en faisant défiler vers le haut?




dans le terminal: histoire -c




Je ne pouvais pas obtenir de tout ce qui précède pour travailler (sur macOS).

Une combinaison a fonctionné pour moi -

IO.write "\e[H\e[2J\e[3J"

Cela efface le tampon et l'écran




Ou vous pouvez envoyer un saut de page (flux de formulaire ASCII) en appuyant sur:

CTRL+L

Bien que cela commence techniquement juste une nouvelle page, cela a le même effet net que toutes les autres méthodes, tout en étant beaucoup plus rapide (sauf pour la solution Apple + K, bien sûr).

Et parce que c'est une commande de contrôle ASCII, cela fonctionne dans tous les shells.




La jolie façon est printf '\33c\e[3J'




Links