Terminal * Ausgabe * Historie?

32663
mikewaters

Ich nutze die Funktionen, um durch die Befehlsgeschichte in meinem Terminal zu navigieren. Ich frage mich, ob es auch eine Möglichkeit gibt, in der Befehlsausgabehistorie zu navigieren? (Neben einer großen Größe und stützen Sie sich auf die pgup-Taste)

Ich kann den Befehl nicht einfach erneut ausführen, da sich in meiner speziellen Situation die Quelle der Befehle ändert. Ich muss häufig auf die Ausgabe einer vorherigen Änderung zurückblicken.

Hacks willkommen.

Vielen Dank!

Edit 2010:

Ich habe den Abschlag "gutgeschrieben"; Unter allen Methoden, um Ihre Sitzung an anderer Stelle zu protokollieren, ist dies die am weitesten verbreitete (dh sie ist Teil von gnu coreutils und erfordert keine spezielle Shell oder ein bestimmtes Dienstprogramm). Es war nicht wirklich das, wonach ich gesucht hatte, aber mir ist klar, dass es so etwas nicht wirklich gibt.

Die nächstliegende Annäherung, die ich mir screenvorstellen kann, ist die Verwendung von etwas wie (byobu / tmux), das Protokolle in einer Datei protokolliert, und einen benutzerdefinierten Befehl zum Durchsuchen / Durchsuchen dieser Protokolldatei schreiben (und mit diesem Schlüsselbindungsbefehl less). Vielen Dank an alle.

Edit 2012:

@Dustin Kirklands Antwort ist eindeutig am besten, zumindest im Allgemeinen; Der Scrollback-Puffer des Terminals ist der unauffälligste Weg, um den Befehlsausgabeverlauf zu navigieren. Byobu hat offenbar eine große Anzahl von gespeicherten Verlaufszeilen (10K; Tmux hat 2K, GNU-Bildschirm 100) und ermöglicht Regex-Suchen (ein flüchtiger Blick weist darauf hin, dass der GNU-Bildschirm keine Scrollback-Suche hat und Tmux nur Klartextsuche hat).

16

6 Antworten auf die Frage

10
Carl Norum

Sie können verwenden tee, um die Befehlsausgabe gleichzeitig an eine Datei und an das Terminal zu senden.

7
Paul R

Sie können scriptIhre Terminalsitzung in einer Datei protokollieren. Wenn Sie möchten, dass dies immer geschieht, fügen Sie einen entsprechenden scriptBefehl hinzu .login.

$ man script

4
Dennis Williamson

screen kann eingestellt werden, um die Ausgabe zu protokollieren.

Ein Weg, um es zu starten, innerhalb einer laufenden screenSitzung ist zu drücken Ctrl- aund dann :, dann eingeben log.

Von man screen:

log [on|off]  Start/stop writing output of the current window to a file "screenlog.n" in the  window's default directory, where n is the number of the current window. This filename can be changed with the `logfile' command. If no parameter is given, the state of logging is toggled. The session log is appended to the previous contents of the file if it already exists. The current contents and the contents of the scrollback history are not included in the session log. Default is `off'.  logfile filename logfile flush secs  Defines the name the log files will get. The default is "screenlog.%n". The  second form changes the number of seconds screen will wait before flushing the logfile buffer to the file-system. The default value is 10 seconds. 
@SQB: Ich habe meine Antwort erweitert. Dennis Williamson vor 9 Jahren 0
4
wieczorek1990

benutzen screen -L

Nach dem Beenden der Shell-Sitzung ( exitBefehl) erhalten Sie eine Protokolldatei in demselben Verzeichnis, in dem Sie begonnen habenscreen

dann können Sie die Ausgabe mit moreoder anzeigenless -R

3
Dustin Kirkland

Sie erwähnen die Verwendung von Byobu ...

Das ist sicherlich eine Möglichkeit. Byobu speichert 10K Zeilen des Scrollback-Verlaufs pro Fenster oder pro Teilung (Bereich).

Sie können den Bildlauf einfach durch Drücken von Alt- PageUp, Alt- PageDownoder durchführen F7. Sobald Sie sich im Scrollback-Modus befinden, können Sie mit vi-like Befehlen vorwärts und rückwärts suchen. Verwenden Sie /regexdiese Option, um vorwärts und ?regexrückwärts zu suchen.

2
Jay

bash behält die Historie des Vorgangs bei, nicht jedoch die Ausgabe der Befehle. Es könnte potenziell riesig sein und ist häufig nicht nützlich.