
Wie stelle ich aus einem Bash-Skript, das das gesamte Terminal einnimmt, die vorherige Sitzung wieder her?
Einige Programme, von denen ich weiß, dass sie so funktionieren:
- Ranger
- vim
- Mann
- Nanometer
Das übliche Muster ist: Das Programm übernimmt das gesamte Terminal und beim Beenden wird alles wiederhergestellt, also eingegebene Befehle und gedruckte Ausgaben.
Antwort1
Sie sollten die Terminfo- cup
Optionen verwenden. Dies kann von einer Shell aus mit dem Befehl erfolgen tput
.
z.B
tput smcup
clear
echo hello
echo there
read
tput rmcup
Dadurch wird der Bildschirm gelöscht, zwei Zeilen gedruckt, es wird gewartet, bis Sie die Eingabetaste drücken, und dann wird der Bildschirm wieder in den vorherigen Zustand zurückversetzt.
Dies erfordert terminfo
natürlich die Definition Ihres Terminals, die dies unterstützt. Nicht alle Terminals verfügen über diese Funktion.
Antwort2
Die Verwendung von clear
oder tput clear
bringt den Verlauf des Originalbildschirms durcheinander, wenn es in einem Bash-Skript verwendet wird. Der Bildschirm ist noch da, aber nur der sichtbare Bildschirm. Der gesamte Verlauf ist weg. Ich habe ewig gebraucht, um herauszufinden, dass clear
durch ersetzt werden muss tput cup 0 0
(funktioniert in meinem Fall, indem der Cursor oben links positioniert wird).
tput smcup
tput cup 0 0 # position cursor top left, simulate clear
...script
tput rmcup