wake-up-neo.net

Wie lösche ich die vorherige Ausgabe in Terminal unter Mac OS X?

Ich kenne den Befehl clear, mit dem der aktuelle Bildschirm "gelöscht" wird. Dies geschieht jedoch, indem viele Zeilenumbrüche gedruckt werden - der gelöschte Inhalt wird einfach nach oben gescrollt.

Gibt es eine Möglichkeit, alle vorherigen Ausgaben des Terminals vollständig zu löschen, sodass ich sie auch nicht durch Scrollen nach oben erreichen kann?

422
Eonil

So löschen Sie das Terminal manuell:

+K

Command+K für neuere Tastaturen

So löschen Sie das Terminal in einem Shell-Skript:

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

Eine bessere Möglichkeit, den Bildschirm innerhalb eines Skripts zu löschen ...

Wenn Sie die OSX-Terminal-App verwenden (wie vom OP angegeben), ist ein besserer Ansatz (dank https://Apple.stackexchange.com/a/113168 ) genau das Folgende:

clear && printf '\e[3J'

was den Scrollback-Puffer löscht. Und es ist schneller als das Ausführen von AppleScript. Es gibt auch andere Optionen, siehe https://Apple.stackexchange.com/a/113168 für weitere Informationen.

ursprüngliche Antwort

Die in diesem Thread gegebene AppleScript-Antwort funktioniert, ABER es hat den unangenehmen Nebeneffekt, ein beliebiges Terminalfenster zu löschen, das gerade aktiv ist. Dies ist überraschend, wenn Sie das Skript in einem Fenster ausführen und versuchen, die Arbeit in einem anderen zu erledigen!

Sie vermeiden dies, indem Sie das AppleScript so verfeinern, dass der Bildschirm nur dann gelöscht wird, wenn es sich ganz vorne befindet (siehe https://Apple.stackexchange.com/a/31887 ):

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

... aber wenn es nicht das aktuelle Fenster ist, wird die Ausgabe gestapelt, bis sie wieder aktuell wird, was wahrscheinlich nicht das ist, was Sie wollen.

61
fearless_fool

Der hübsche Weg ist printf '\33c\e[3J'

43
qiuyi

Fügen Sie dies in Ihr .bash_profile oder .bashrc ein

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

Unter Mac OS X Terminal ist diese Funktionalität bereits als View->Clear Scrollback in die Terminal-Anwendung integriert (Standard ist CMD+K).

Sie können dies also mit Apples Tastaturkürzeln nach Belieben neu zuweisen. Fügen Sie einfach eine neue Verknüpfung für Terminal mit dem Befehl "Scrollback löschen" hinzu. (Ich benutze CMD+L, weil es ähnlich ist wie CTRL+L um den aktuellen Bildschirminhalt zu löschen, ohne den Puffer zu löschen.)

Nicht sicher, wie Sie dies in einem Skript verwenden würden (möglicherweise AppleScript, wie andere darauf hingewiesen haben).

19
SeaSide

Bei Mac OS X Yosemite (10.10) löschen Sie den Scrollback in Terminal.app mit Option + Command + K.

9
David J.

Oder Sie können einen Seitenumbruch (ASCII-Formular-Feed) senden, indem Sie drücken:

CTRL+L

Während dies technisch nur eine neue Seite startet, hat dies den gleichen Nettoeffekt wie alle anderen Methoden, ist jedoch wesentlich schneller (außer natürlich mit der Apple + K-Lösung).

Und da dies ein Steuerbefehl von ASCII ist, funktioniert es in allen Shells.

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

löscht alles, funktioniert auch unter osX. sehr gepflegt

Wenn Sie im Terminal Folgendes eingeben, wird gelöscht Ihr Verlauf (dh der Pfeil nach oben wird nichts erhalten) - aber der Bildschirm wird nicht gelöscht:

history -c
3
phil

Ich konnte nichts von dem oben genannten zur Arbeit bringen (auf macOS).

Eine Kombination hat für mich gearbeitet - 

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

Dadurch werden der Puffer und der Bildschirm gelöscht

1
Michael Baldry

Command + K löscht die vorherige Ausgabe

Um den eingegebenen Text zu löschen, springen Sie zuerst mit "Command + A" nach links und löschen Sie den Text rechts neben dem Zeiger mit "Control + K".

Visuelle Beispiele:  enter image description here

0
Punnerud

Mach das Richtige, mach das Richtige!

Zum vorherigen Punkt löschen:Command-L

Zum vorherigen Lesezeichen löschen:Option-Command-L

Zum Anfang löschen:Command-K

Helfen Sie Ihren Jungs!

0

So löschen Sie nur die letzte Ausgabe:

+L

So löschen Sie das Terminal vollständig:

+K

0
Aman Jain