Sie können verwenden tee
, um die Befehlsausgabe gleichzeitig an eine Datei und an das Terminal zu senden.
Terminal * Ausgabe * Historie?
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 screen
vorstellen 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).
6 Antworten auf die Frage
- Beliebte
- Neu
- Mit Kommentaren
- Aktiv
Sie können script
Ihre Terminalsitzung in einer Datei protokollieren. Wenn Sie möchten, dass dies immer geschieht, fügen Sie einen entsprechenden script
Befehl hinzu .login
.
$ man script
screen
kann eingestellt werden, um die Ausgabe zu protokollieren.
Ein Weg, um es zu starten, innerhalb einer laufenden screen
Sitzung 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.
benutzen screen -L
Nach dem Beenden der Shell-Sitzung ( exit
Befehl) erhalten Sie eine Protokolldatei in demselben Verzeichnis, in dem Sie begonnen habenscreen
dann können Sie die Ausgabe mit more
oder anzeigenless -R
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 /regex
diese Option, um vorwärts und ?regex
rückwärts zu suchen.
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.
Verwandte Probleme
-
1
Pausieren Sie alle Aufgaben außer x CPU-intensiven Aufgaben
-
10
Wie kann ich die Bash-Historie durchsuchen und einen Befehl erneut ausführen?
-
2
Kann die Ausgabe eines Befehls an zwei andere Befehle weitergeleitet werden?
-
8
Benennen Sie eine Gruppe von Dateien mit einem Befehl um
-
2
Warum aktualisiert sich mein Pfad nicht * jetzt *?
-
5
Wie entferne ich einen symbolischen Link zu einem Verzeichnis?
-
8
Rette mich vor dem Kauderwelsch
-
9
Wie kann ich jeder Zeile einer Textdatei eine Zeilennummer und einen Tabulator voranstellen?
-
1
Wann sollte ich Konfigurationen in .bashrc vs einfügen? .bash_profile?
-
1
Umleitung: Wie kam das zusätzliche Wort in die Datei?