Antworten:
Wenn Ihr Terminal - Emulator unterstützt, können Sie dies mit dem gleichen Mechanismus durch verwendet verwendet less, vimet al, nämlich die tiund teTERMCAP Fähigkeiten ( smcupund rmcupin dem moderneren term). Diese wechseln vom primären zum sekundären Bildschirm bzw. zurück zum primären.
Wenn Ihr System über den tputBefehl verfügt, können Sie Folgendes verwenden:
tput smcup # switch to secondary screen
...
tput rmcup # switch back to primary screen
Andernfalls gilt für xtermund wahrscheinlich für die meisten anderen Terminalemulatoren Folgendes:
printf '\e[7\e[?47h'
sollte zum sekundären Bildschirm wechseln, und dies:
printf '\e[2J\e[?47l\e8'
sollte zurück zum primären wechseln (und den Cursor wieder dorthin setzen, wo er war).
tcsh verfügt über einen integrierten echotcBefehl, sodass Sie Folgendes tun können:
tcsh -c 'echotc ti'
...
tcsh -c 'echotc te'
(oder einfach echotcdirekt verwenden, wenn Sie gerade tcsh verwenden).
tput, versuchen Sie es mit der modernen 1049Version 47. Dies wurde von Xterm eingeführt und wird von einigen anderen Terminalemulatoren unterstützt. Der alternative Bildschirm wird beim Umschalten gelöscht und der Inhalt bleibt beim Zurückschalten erhalten (sodass Sie den Inhalt nach dem Beenden des Vollbildprogramms anzeigen / kopieren können).
trap 'tput rmcup' EXIT.
Dies wird als „zweiter Bildschirm“ genannt (und wie die t o p google Treffer zeigen, Sie sind insofern ungewöhnlich mögen diese Funktion). Einige Terminals unterstützen zwei Bildschirmpuffer, von denen einer von Vollbildanwendungen und der andere von zeilenorientierten Anwendungen verwendet wird. Bash weiß nichts über sie. Wenn ein Befehl einfach eine Ausgabe an das Terminal ausgibt, können Sie mithilfe von Terminalsteuerungssequenzen zum sekundären Bildschirm und zurück wechseln (diese Befehle sind in xterm ctlseqs dokumentiert ).
printf '\e[?47h'; mycommand; printf '\e[?47l'
Beachten Sie, dass es für den alternativen Bildschirm keinen Bildlauf gibt, sodass nur der letzte Bildschirm mit der Ausgabe angezeigt wird. Wenn das ein Problem ist, machen Sie einfach das Einfache:
mycommand | less
Es gibt nur zwei Bildschirmpuffer. Wenn Sie mehr möchten, verwenden Sie einen geeigneten Bildschirmmultiplexer wie Screen oder Tmux .
Keine der aktuellen Antworten schien auf meinem Computer zu funktionieren, aber ich erfuhr von dem Befehl namens screen, der den Trick für mich zu tun scheint.
xtermgibt eine Option, um diese Kontrollsequenzen (zu aktivieren); andere wahrscheinlich auch.
tput smcupundtput rmcupscheint den Job zu machen.