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?
⌘+K
Command+K für neuere Tastaturen
/usr/bin/osascript -e 'tell application "System Events" to tell process "Terminal" to keystroke "k" using command down'
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.
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.
Der hübsche Weg ist printf '\33c\e[3J'
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'
}
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).
Bei Mac OS X Yosemite (10.10) löschen Sie den Scrollback in Terminal.app mit Option + Command + K
.
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.
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
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
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!
⌘+L
⌘+K