697 Stimmen

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

Ich kenne die clear Befehl, der den aktuellen Bildschirm "löscht", aber er tut dies nur, indem er viele Zeilenumbrüche ausgibt - der gelöschte Inhalt wird einfach nach oben gerollt.

Gibt es eine Möglichkeit, alle vorherigen Ausgaben aus dem Terminal zu löschen, so dass ich sie nicht einmal durch Scrollen nach oben erreichen kann?

1352voto

Alok Singhal Punkte 87419

Um das Terminal manuell zu löschen:

+ K

Command + K für neuere Tastaturen

So löschen Sie das Terminal aus einem Shell-Skript heraus;

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

133voto

fearless_fool Punkte 31331

Eine bessere Möglichkeit, den Bildschirm aus einem Skript heraus zu löschen...

Wenn Sie die OS X Terminal-Anwendung verwenden (wie vom Auftraggeber angegeben), ist ein besserer Ansatz (Dank an Die Antwort von Chris Page auf Wie setze ich das Zurückblättern im Terminal über einen Shell-Befehl zurück? ) ist genau dies:

clear && printf '\e[3J'

oder noch prägnanter ( Hut ab vor dem Benutzer qiuyi ) :

printf '\33c\e[3J'

was den Scrollback-Puffer und den Bildschirm löscht. Es gibt auch noch andere Optionen. Siehe Die Antwort von Chris Page auf Wie setze ich das Zurückblättern im Terminal über einen Shell-Befehl zurück? für weitere Informationen.

Ursprüngliche Antwort

Die in diesem Thread gegebene AppleScript-Antwort funktioniert, sondern hat es die unangenehme Nebenwirkung, dass es die jede Terminalfenster, das gerade aktiv ist. Das ist überraschend, wenn Sie das Skript in einem Fenster ausführen und in einem anderen versuchen, Ihre Arbeit zu erledigen!

Sie vermeiden dies, indem Sie das AppleScript so verfeinern, dass es den Bildschirm nur dann löscht, wenn er ganz vorne ist, indem Sie Folgendes tun (übernommen aus MattiSGs Antwort auf Wie setze ich das Zurückblättern im Terminal über einen Shell-Befehl zurück? ) :

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 es wieder aktuell wird, was wahrscheinlich nicht das ist, was Sie wollen.

87voto

Aman Jain Punkte 1737

Um nur die letzte Ausgabe zu löschen:

+ L

Um das Terminal vollständig zu löschen:

+ K

67voto

qiuyi Punkte 599

Der schöne Weg ist printf '\33c\e[3J'

37voto

Robert Simmons Jr. Punkte 1182

Legen Sie dies in Ihr .bash_profile o .bashrc Datei:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X