Ich möchte ein ähnliches Verhalten wie less
vim
nano
etc. verwendet.
Ist das mit Bash möglich?
Wenn Ihr Terminal - Emulator unterstützt, können Sie dies mit dem gleichen Mechanismus durch verwendet verwendet less
, vim
et al, nämlich die ti
und te
TERMCAP Fähigkeiten ( smcup
und rmcup
in dem moderneren term). Diese wechseln vom primären zum sekundären Bildschirm bzw. zurück zum primären.
Wenn Ihr System über den tput
Befehl verfügt, können Sie Folgendes verwenden:
tput smcup # switch to secondary screen
...
tput rmcup # switch back to primary screen
Andernfalls gilt für xterm
und 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 echotc
Befehl, sodass Sie Folgendes tun können:
tcsh -c 'echotc ti'
...
tcsh -c 'echotc te'
(oder einfach echotc
direkt verwenden, wenn Sie gerade tcsh verwenden).
tput smcup
undtput rmcup
scheint den Job zu machen.tput
, versuchen Sie es mit der modernen1049
Version47
. 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 ).
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:
Es gibt nur zwei Bildschirmpuffer. Wenn Sie mehr möchten, verwenden Sie einen geeigneten Bildschirmmultiplexer wie Screen oder Tmux .
quelle
Bash weiß nichts über Bildschirme (es kann tatsächlich laufen, ohne gesehen zu werden). Sie können jedoch sowohl die Standardausgabe als auch den Standardfehler in eine beliebige Datei oder Pipe umleiten.
quelle
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.quelle
xterm
gibt eine Option, um diese Kontrollsequenzen (zu aktivieren); andere wahrscheinlich auch.