Scrollen Sie innerhalb des Bildschirms oder unterbrechen Sie die Ausgabe

383

Ich verwende den Bildschirm für meine Befehlszeilenaufgaben, während ich die Server verwalte, auf denen ich arbeite. Ich führe normalerweise kleine Befehle aus (meistens Dateisystem-Tasks), aber manchmal führe ich umfangreichere Tasks aus (wie DBA).

Die Ausgabe dieser Aufgaben ist mir wichtig. Da ich für meine Aufgaben Ubuntu und OS X (beide Terminal-Windows) verwende, aber den Bildschirm verwenden muss, ist das Scrollen nicht verfügbar, sodass lange Ausgaben (z. B. eine 500-Zeilen-Tabelle aus einer Auswahl) für mich unsichtbar sind. Mausrad kommt nicht in Frage.

Wenn ich sage "Schriftrolle ist für mich unsichtbar", meine ich Folgendes:

Oben während der Verwendung des Bildschirms, in Mac OS X während des Bildlaufs

Ich habe über zwei Möglichkeiten nachgedacht:

  1. Pause (denken Paginieren ) die Ausgabe eines bestimmten Befehl. Wenn die Ausgabe beginnt, kann ich lesen, was gerade passiert. Dann drücke ich die Eingabetaste. Die Ausgabe wird fortgesetzt, bis nichts mehr zu zeigen ist.

  2. Scrollen Sie innerhalb des Bildschirms. Aber ich weiß nicht, ob das möglich ist.

Natürlich weiß ich nicht, ob diese Optionen tatsächlich möglich sind . Wenn ja, wie können sie erreicht werden? Andere Alternativen werden gut angenommen.

AeroCross
quelle

Antworten:

526

Screen hat einen eigenen Bildlaufpuffer, da es sich um einen Terminal-Multiplexer handelt und mit mehreren Puffern zu tun hat .

Vielleicht gibt es einen besseren Weg, aber ich bin es gewohnt, mit dem "Kopiermodus" zu scrollen (mit dem Sie Text über den Bildschirm selbst kopieren können, obwohl dazu auch der Befehl Einfügen erforderlich ist):

  • Tippen Sie auf Ihre Bildschirmpräfixkombination ( standardmäßig C-a/ control+ A) und dann auf Escape.

  • Bewegen Sie sich mit den Pfeiltasten ( und ) nach oben / unten .

  • Wenn Sie fertig sind, drücken Sie qoder Escape, um zum Ende des Bildlaufpuffers zurückzukehren.

(Wenn statt qoder EscapeSie treffen Enteroder Returnund dann den Cursor bewegen, werden Sie Text markieren, zu kopieren und Schlagen Enteroder Returnein zweites Mal wird es kopieren. Dann können Sie mit Paste , C-agefolgt von ].)

Natürlich können Sie immer moreund verwenden less, zwei häufig verwendete Pager, die für einige Befehle ausreichend sein können.

njsg
quelle
5
Wenn Sie q drücken, wird der Kopiermodus beendet, ohne dass etwas kopiert wird (und Sie müssen nur noch eine Taste drücken). Dies könnte in der vi-Erklärung stehen, aber die Verknüpfung ist jetzt unterbrochen.
Nathanael Farley
3
Durch Drücken von [Esc] wird auch der Kopiermodus beendet.
Sopalajo de Arrierez
7
Wie kann ich blättern?
Sungguk Lim
10
Der Bildlaufpuffer scheint vi-ähnliche Befehle zu unterstützen: Cb und Cf zum Blättern der Seite nach oben / unten.
Touko
3
Im Kopiermodus funktionieren die Schaltflächen PageUp und PageDown. Beim ersten Drücken wird nur eine Zeile verschoben, danach wird wie gewohnt geblättert.
Elijah
171

Die Verwendung des screenPuffers, auf den njsg hingewiesen hat, ist eine gute Lösung. Sie können den alternativen Textpuffer auch im Fenster xterm termcap info deaktivieren. Wenn deaktiviert, können Sie mit den Bildlaufleisten (und dem Mausrad) nach oben und unten scrollen.

Fügen Sie dieses Ihrem hinzu ~/.screenrc.

# Enable mouse scrolling and scroll bar history scrolling
termcapinfo xterm* ti@:te@

Sie können mehr Diskussion hier lesen .

George M
quelle
1
Stellen
2
Hiermit funktionieren auch die typischen Tastaturkürzel von Linux-Terminals (Umschalt + Pg hoch / runter nach Hause / Ende), danke.
Tokland
5
Allein dieser Tipp lässt mich die Verwendung des Bildschirms überdenken ...
Fish Monitor
5
+1 Eleganter als akzeptierte Lösung.
Ryan Yoosefi
9
Gibt nur die Ausgabe aus, screendie Sie seit dem Start erhalten haben. Wenn Sie sie an einem anderen Ort anbringen, können Sie nicht nach oben scrollen und sehen, was zuvor passiert ist. Mit der Lösung in der akzeptierten Antwort können Sie jedoch immer noch frühere Ausgaben abrufen. Anschließend können Sie Ihr Mausrad erneut verwenden.
Phil
28

In all diesen Antworten wurde das Navigieren in einer Bildschirmsitzung angesprochen, aber im Bildschirmbefehl ist eine Funktion integriert, mit der alles in einer Datei über das -LArgument gespeichert werden kann. Das Handbuch lautet:

-L Weist den Bildschirm an, die automatische Ausgabeprotokollierung für die Fenster zu aktivieren.

so kannst du machen:

screen -L -S testscreen

und es wird eine Datei Withe das schaffen , screenlog.#wo die #eine Nummer für diesen Bildschirm ab 0 ist.

Das hat viele Vorteile und die wichtigsten sind für mich:

  1. Halten Sie fest, was ich getan habe, seit ich die Protokolldatei im Projektordner speichern kann, um später darauf zurückgreifen zu können.
  2. Sie können den Prozess inaktiv und passiv überwachen:
    • Verwenden Sie tailfdiese Option, um den Fortschritt in Echtzeit zu überwachen, ohne an den Bildschirm gebunden zu sein.
    • Verwenden Sie grepdiese Option, um nach einem bestimmten Begriff im Protokoll zu suchen und Benachrichtigungen zu erstellen (E-Mail, Popup, Voip usw.). Dies kann auf mehrere Bildschirme angewendet werden, ohne dass Sie diese aktiv betrachten.
Mehrad Mahmoudian
quelle
1
Ich war mir der -LBildschirmmarkierung nicht bewusst , dies ist sehr nützlich! +1
Kredns
1
will nur mehr hinzufügen, screenlog.#wird in demselben Ordner generiert, in dem Sie den screenBefehl ausführen
Lê Quang Duy
3

Es ist mir gelungen, grundlegende Paging-Funktionen zu erhalten, indem ich Inhalte weiterleitete more, zum Beispiel an:

ls -l | more

Wenn Sie eine Farbausgabe für Anwendungsfälle wie Syntaxhervorhebung wünschen, können Sie diese verwenden

ls -l --color=always | more

Dies führt zu einer Ausgabe, mit der ich problemlos auf einem Bildschirm blättern kann. Ich habe @ uthers Änderung an noch nicht ausprobiert, ~/.screenrcaber dies scheint als dauerhafte Lösung vorzuziehen, wenn eine Maus verfügbar ist.

Um dies auszuprobieren, können Sie zu diesem BusyBox-Emulator gehen und dann ...

cd ~/bin
ls -l --color=always | more

Verwenden Sie die Leertaste, um durch die Ergebnisse des ls -lBefehls zu blättern, oder verwenden Sie die Eingabetaste, um zeilenweise durch die Ergebnisse zu navigieren.

Michael Hogan
quelle