Während Sie am Linux-Terminal arbeiten, möchten Sie häufig die Terminalausgabe eines Befehls in einer Datei speichern. Diese Datei kann als Information für einen anderen Vorgang oder zum einfachen Protokollieren der Terminalaktivität verwendet werden. Hier sind vier verschiedene Möglichkeiten, wie Terminalinhalte in einer Datei gespeichert werden können.
Die folgenden Methoden gelten für alle Linux-Distributionen und können sogar auf Macs und BSD verwendet werden. Das einzige, worüber Sie nachdenken müssen, ist, welche Methode am besten geeignet ist, um die Arbeit zu erledigen.
1. Verwenden von Umleitungsoperatoren
Die gebräuchlichste und grundlegendste Möglichkeit, die Ausgabe vom Terminal in eine Datei umzuleiten, ist die Verwendung von >
und >>
Betreiber. Sie leiten nur die Ausgabe an eine angegebene Textdatei. Sie leiten keine Fehler um. Diese werden weiterhin im Terminal angezeigt.
Das >
Der Operator leitet die Ausgabe in eine Datei um und überschreibt den Inhalt dieser Datei, während der >>
Der Operator hängt die Ausgabe an das Ende der Datei an. Hier ist eine Illustration:
Erstellen Sie zunächst eine Datei mit dem touch
Befehl.
Eine Zeile wird jetzt mit dem Befehl “file1.txt” wiedergegeben >
Operator. Man kann sich das als Dumping der Ausgabe des vorstellen echo
Befehl zu “file1.txt”.
echo "first statement" > file1.txt
Eine weitere Zeile wird in “file1.txt” wiedergegeben.
echo "second statement" > file1.txt
Beim Anzeigen des Inhalts von “file1.txt” sehen wir, dass nur die zweite Zeile in der Datei gespeichert ist. Das liegt daran, dass die >
Der Operator überschreibt den vorhandenen Dateiinhalt.
Wenn wir Inhalte an die Datei anhängen möchten, dann die >>
Operator muss angegeben werden.
Wir können das Ergebnis der erfolgreichen Append-Operation anzeigen.
Wenn Sie nur die Fehler speichern möchten, verwenden Sie die 2>
und 2>>
Operatoren stattdessen.
Wenn Sie daran interessiert sind, alles zu protokollieren, verwenden Sie &>
und &>>
um alle Ausgaben (einschließlich Fehler) in eine Datei umzuleiten, ohne dass etwas im Terminal angezeigt wird.
2. Verwenden Sie den Befehl tee
Bei den oben gezeigten Umleitungsoperatoren wird die Ausgabe des Befehls nicht auf dem Bildschirm angezeigt. Wenn Sie möchten, dass die Ausgabe auf dem Terminal angezeigt und in eine Datei geschrieben wird, können Sie die verwenden tee
Befehl.
<command> | tee -a <file_name>
Das Pipe-Symbol (|) übergibt die Ausgabe von <command>
als Eingabe zu tee
, die wiederum die Ausgabe auf dem Bildschirm anzeigt. Wenn die -a
Dann wird der Schalter angegeben tee
Hängt diese Ausgabe an die angegebene Datei an, andernfalls wird der Inhalt dieser Datei überschrieben.
Gemäß dem oben gezeigten Befehl sollte der Text “vierte Anweisung” an “file1.txt” angehängt worden sein. Überprüfung mit dem cat
Befehl bestätigt unsere Vermutung.
Sie können auch die verwenden |&
Betreiber und die tee
Befehl, um alles anzuzeigen und auch zu protokollieren.
<command> |& tee -a <file_name>
3. Verwenden des Skriptbefehls
Mit dem script
Befehl, die Ausgabe der folgenden Befehle wird automatisch in eine Datei geschrieben, bis sie zum Beenden aufgefordert wird. Dies kann mit einer Sitzung verglichen werden, in der die Terminalaktivität aufgezeichnet wird.
Zuerst die script
Der Befehl wird mit dem Namen der Datei aufgerufen, um die Terminalaktivität zu speichern.
script <file_name>
Eine Meldung fordert Sie auf, das Skript zu starten, und dann werden die Befehle nacheinander eingegeben – hier date
, pwd
, ls
und cal
.
Um das Scripting zu beenden, müssen Sie die exit
Befehl wird aufgerufen. Es wird die Meldung angezeigt, dass die Skriptoperation ausgeführt wurde. Anzeigen des Inhalts von “script_log.txt” mit cat
sehen wir, dass der Inhalt der Datei wie eine exakte Nachbildung des Terminals aussieht.
Gegen Ende sehen wir den Zeitstempel, als das Skript fertiggestellt wurde. Wenn diese Datei in einem Texteditor angezeigt wird, können wir Textinhalt und Junk sehen. Dies ist eigentlich die Bash-Eingabeaufforderung in einem Format, das für die Bash-Shell verständlich ist.
Nur wenn diese Datei in der Shell mit dem angezeigt wird cat
Befehl erhalten wir vollständig verständliche Informationen.
Versuchen wir es mit einem anderen und speichern die Terminalausgabe in “2-script_log.txt”.
Befehlepwd
und ls
getippt sind.
Ohne zu tippen exit
wird das Terminalfenster geschlossen. Wenn wir versuchen, den Inhalt von “2-script_log.txt” anzuzeigen, können wir sehen, dass er leer ist.
Wenn eine Skriptsitzung initiiert wurde, wird der Inhalt dieser Sitzung im Speicher gespeichert und nur dann in die Datei geschrieben, wenn die exit
Befehl wird aufgerufen. Hier seitdem exit
wurde nicht aufgerufen, der Inhalt dieser Sitzung wurde nicht in “2-script_log.txt” gespeichert.
Das Überschreib- und Anhängeverhalten von Skripten ist ähnlich wie tee
und die Umleitungsoperatoren. Das -a
switch hängt den Inhalt einer Sitzung an eine zuvor vorhandene Datei an. Hier Ausgabe der echo
Befehl wird an “script_log.txt” angehängt.
Lassen Sie uns die Ausgabe von “script_log.txt” anzeigen. Wir können die zuvor gespeicherte Ausgabe des sehen date
, pwd
, ls
, cal
Befehle gefolgt vom Zeitstempel; Danach finden wir die Informationen der nächsten Sitzung, die mit dem Zeitstempel enden.
4. Verwenden des Befehls logsave
logsave
verhält sich ähnlich wie tee
– Es zeigt die Ausgabe auf dem Bildschirm an und speichert sie auch in einer Datei. Es wird wie folgt verwendet:
logsave <file_name> <command>
logsave
schreibt die Ausgabe von <command>
zu der von angegebenen Datei <file_name>
. Lassen Sie uns die Ausgabe von “mylog_file.txt” anzeigen.
Es werden viele Informationen zusammen mit dem Ergebnis eines Befehls gespeichert. Hier werden zwei Zeitstempel gespeichert: Der erste ist der Zeitpunkt, zu dem der Befehl initiiert wurde, und der zweite ist der Zeitpunkt, zu dem der Befehl seine Ausführung abgeschlossen hat. Hier sind die Zeitstempel gleich. Wenn eine rekursive Verzeichnisliste im Verzeichnis “/ home” auf einem Mehrbenutzersystem initiiert wird, dauert die vollständige Ausführung des Befehls eine Weile. In diesem Fall wären die Start- und Endzeitstempel unterschiedlich.
Die Ausgabe weiterer Befehle kann an dieselbe Datei angehängt werden, wenn die -a
Schalter wird verwendet mit logsave
.
logsave -a <file_name> <command>
Wenn wir versuchen, den Inhalt von “mylog_file.txt” anzuzeigen, sehen wir, dass die Ausgabe der beiden zuvor eingegebenen Befehle durch eine Zeile abgegrenzt ist.
Dies sind einige der nützlicheren Möglichkeiten, um eine Terminalausgabe in einer Datei unter Linux zu speichern. Welches bevorzugen Sie?
Verbunden:
- Multitasking im Linux-Terminal mit Bildschirm
- So installieren Sie ein Wörterbuch zur Verwendung in Linux Terminal
- Verwendung des Linux-Terminals als Taschenrechner