So scrollen Sie im Terminalfenster nach oben, während neue Eingaben generiert werden, ohne dass diese nach unten verschoben werden (Linux)

37

In Ubuntu möchte ich einen Bildlauf nach oben durchführen, während ein Befehl in meinem Terminalfenster ausgeführt wird und eine neue Ausgabe generiert (tatsächlich lautet der ausgeführte Befehl rspec). Ich kann einen Bildlauf nach oben durchführen, aber jedes Mal, wenn rspec eine neue Zeile der Konsolenausgabe generiert, werde ich wieder nach unten verschoben. Gibt es eine Möglichkeit, alles nach oben zu scrollen? Ich benutze Terminator unter Linux Mint / Ubuntu 12.04 LTS

AKTUALISIEREN

Ich habe eine mögliche Problemumgehung gefunden. Terminator Homepage sagt das mit

stty ixon

Sie können "XON / XOFF-Flusskontrolle für die Terminalausgabe aktivieren. Sie können die Ausgabe anhalten, indem Sie ^ S eingeben, und sie durch Eingabe von ^ Q [...] fortsetzen."

Dies ist jedoch nicht ganz das, was ich wollte, ohne die Ausgabe anhalten zu müssen (und mich vielleicht zu wundern, wenn ich vergesse, sie wieder einzuschalten). Ich dachte, es gäbe eine einfache Modifizierertaste wie shft-alt mit dem Mausrad nach oben bessere Lösungen?

Yo Ludke
quelle
Das ist eine Sache, die ich an LXTerminal (LXDE) wirklich mag.
Matthew Lundberg
Scrollen Sie mit Shift-PgUp oder mit der Bildlaufleiste?
ott--
@MatthewLundberg Normalerweise mit Mausrad, also Bildlaufleiste. Aber es funktioniert auch nicht mit shift-pgup :( Kann ich lxterminal auch innerhalb des Terminators haben, weißt du?
Yo Ludke
1
xfce4-terminalhat eine Option mit dem Namen Scroll on output , die Sie deaktivieren und genau das tun können, was Sie gefragt haben.
Martín Canaval
1
Um dieses Problem zu umgehen, können Sie die Ausgabe an eine Datei senden, ein anderes Terminal öffnen und tail -f file.txtsehen, wie sie generiert wird. Dann kann Ihr erstes Terminal zurückscrollen und Sie können die Ausgabe trotzdem in Echtzeit sehen. Ich weiß, nicht elegant.
Terdon

Antworten:

53

Ich bin zwar etwas spät dran, aber ich poste das hier, damit jeder, der hierher kommt, eine Lösung findet. Für mich war die Lösung für das gleiche Problem:

Terminatoreinstellungen -> Registerkarte "Profile" -> Registerkarte "Bildlauf" -> Deaktivieren Sie die Option "Bildlauf bei Ausgabe".

Das Gute an dieser Option ist, dass bei der Ausgabe immer noch gescrollt wird, wenn Sie sich ganz am Ende der Ausgabe befinden. Sobald Sie jedoch nach oben scrollen, wird sie angehalten und Sie werden auch dann nicht mehr gestört, wenn der Ausgabeinhalt noch vorhanden ist erzeugt.

ich hoffe das hilft

Chikitulfo
quelle
cool :) Ist es möglich, eine Verknüpfung zum Umschalten dieser Option zu erstellen?
Yo Ludke
1
Ich habe ein bisschen gesucht, aber keine Möglichkeit gefunden, es mit einer Abkürzung im Terminator umzuschalten. Da die Option jedoch in der Terminator-Konfigurationsdatei unter "$ HOME / .config / terminator / config" geschrieben ist, sollte es möglich sein, einem Befehl, der die Option direkt in der Konfigurationsdatei ein- und ausschaltet, eine globale Verknüpfung zuzuweisen.
Chikitulfo
4
Die Änderung der Konfigurationsdatei wirkt sich jedoch nicht auf bereits ausgeführte Terminatorinstanzen aus, sondern nur auf neue Terminatorinstanzen, die nach der Bearbeitung gestartet wurden. Also, wenn Sie es auf einem laufenden Terminator umschalten möchten, müssen Sie es manuell tun, afaik. In jedem Fall wird mit der Option auf false umgeschaltet, sobald Sie bis zur letzten Zeile gescrollt haben, der automatische Bildlauf bei der Ausgabe fortgesetzt. Das automatische Scrollen wird nur gestoppt, wenn Sie manuell nach oben scrollen. Daher sehe ich keine Notwendigkeit, die Option ein- und auszuschalten.
Chikitulfo
1

tail -f log.txt | lesswird aktualisiert, um auf die neuen Informationen zuzugreifen, und Sie können dann nach oben oder unten gehen. Sie können auch lessSuchfunktionen usw. verwenden. Mit der Pipe-Methode können Sie auch die sich bewegende Ausgabe analysieren.

Und die gleiche Idee, aber ohne das Rohr: less +F log.txt.
(Dies setzt voraus, dass Sie auf diese Weise mit Ihren Inhalten arbeiten können.)

Die alte Unix-Methode bestand darin, Strg-S in Ihrem Terminal zu drücken, um anzuhalten, und Strg-Q, um das Scrollen der Ausgabe neu zu starten - dies ist im Grunde das, was Sie mit dem Terminator tun können stty ixon.
Mit den hinzugefügten Bildlaufleisten scheint mir das ziemlich anständig zu sein - drücke Strg-S, scrolle nach oben, was immer du willst, und dann Strg-Q, um wieder nach unten zu gehen. Ja, Sie werden gelegentlich vergessen, die Ausgabe zu unterbrechen.

Weil ich außergewöhnlich faul bin und weil ich die Flexibilität der Ausgabeumleitung mag, würde ich tail -f mit der Pipe verwenden (vorausgesetzt, das passt zum Fall). Dann kann ich es stoppen, einen Pfeil nach oben setzen und so etwas wie ein Grep hinzufügen, und es läuft immer noch: tail -f tac_plus.log | less | egrep 'peerip'

Wirf ein paar cats teehinein und du hast eine richtige Party.

belacqua
quelle
Ich wollte dies für Rspec-Spezifikationen verwenden. - Das Problem ist, dass mit den Tail / Less-Ansätzen die Farben verloren gehen (die Ausgabe erfolgt in Schwarzweiß anstelle von Grün / Rot, wenn ich den Befehl direkt
ausführe
@YoLudke Ich kenne mich mit rspec nicht aus und weiß nicht, wie es koloriert. Es gibt Möglichkeiten, Farben durch grep usw. zu leiten, aber das funktioniert hier möglicherweise nicht. Tun Sie so etwas wie das Zeigen von rspec auf einen dauerhaften / sich wiederholenden / lang andauernden Prozess und das Erhalten Ihrer Ausgabe von diesem?
Belacqua