web-dev-qa-db-fra.com

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

Je connais la commande clear qui "efface" l'écran actuel, mais cela se fait simplement en imprimant de nombreuses nouvelles lignes - le contenu effacé est simplement défilé.

Existe-t-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?

422
Eonil

Pour effacer le terminal manuellement:

+K

Command+K pour les nouveaux claviers

Pour effacer le terminal depuis un script Shell;

/usr/bin/osascript -e 'tell application "System Events" to tell process "Terminal" to keystroke "k" using command down'
945
Alok Singhal

Un meilleur moyen d'effacer l'écran à partir d'un script ...

Si vous utilisez l'application Terminal OSX (comme indiqué par l'OP), une meilleure approche (grâce à https://Apple.stackexchange.com/a/113168 ) est la suivante:

clear && printf '\e[3J'

qui efface le tampon de défilement. Et c'est plus rapide que d'utiliser 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 active. Ceci est surprenant si vous exécutez le script dans une fenêtre et essayez de travailler dans une autre!

Vous évitez cela en affinant le script AppleScript pour effacer l'écran uniquement s'il est au premier plan (à partir 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 va s'empiler jusqu'à ce qu'elle redevienne courante, ce qui n'est probablement pas ce que vous voulez.

61
fearless_fool

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

43
qiuyi

Mettez ceci dans votre .bash_profile ou .bashrc

function cls { 
osascript -e 'tell application "System Events" to keystroke "k" using command down' 
}
33
Robert Simmons Jr.

Sur Mac OS X Terminal, cette fonctionnalité est déjà intégrée à l’application Terminal sous le nom View->Clear Scrollback (la valeur par défaut est CMD+K).

Ainsi, vous pouvez réaffecter cela à votre guise avec les raccourcis clavier d’Apple. Ajoutez simplement un nouveau raccourci pour Terminal avec la commande "Clear Scrollback". (J'utilise CMD+L, parce que c'est semblable à CTRL+L pour effacer le contenu actuel de l’écran, sans effacer le tampon.)

Je ne sais pas comment vous utiliseriez cela dans un script (peut-être AppleScript comme d'autres l'ont fait remarquer).

19
SeaSide

Avec Mac OS X, Yosemite (10.10) utilise Option + Command + K pour effacer le défilement dans Terminal.app.

9
David J.

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

CTRL+L

Techniquement, cela commence simplement une nouvelle page, mais 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 comme il s'agit d'une commande de contrôle ASCII, cela fonctionne dans tous les shells.

8
user2897962
clear && printf '\e[3J'

efface tout, fonctionne bien aussi sur osX. très propre

4

Taper ce qui suit dans le terminal effacera effacera votre historique (si vous utilisez la flèche vers le haut, vous n’obtiendrez rien), mais n’effacera pas l’écran:

history -c
3
phil

Je ne pouvais obtenir aucun des éléments ci-dessus au travail (sur macOS).

Une combinaison a fonctionné pour moi - 

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

Cela efface le tampon et l'écran

1
Michael Baldry

Command + K effacera la sortie précédente

Pour effacer le texte saisi, commencez par aller à gauche avec "Commande + A" puis effacez le texte situé à droite du pointeur avec "Contrôle + K".

Exemples visuels:  enter image description here

0
Punnerud

Faire la bonne chose, faire la bonne chose!

Effacer la marque précédente:Command-L

Effacer le favori précédent:Option-Command-L

Effacer pour démarrer:Command-K

Aidez vos gars!

0
McAllister Bowman

Pour supprimer uniquement la dernière sortie:

+L

Pour effacer complètement le terminal:

+K

0
Aman Jain