Wiederherstellen der Sitzung nach dem Ausführen eines Shell-Skripts

Wiederherstellen der Sitzung nach dem Ausführen eines Shell-Skripts

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- cupOptionen 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 terminfonatürlich die Definition Ihres Terminals, die dies unterstützt. Nicht alle Terminals verfügen über diese Funktion.

Antwort2

Die Verwendung von clearoder tput clearbringt 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 cleardurch 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

verwandte Informationen