So speichern Sie die Terminalausgabe in einer Datei unter Linux

Terminalausgabedatei 00 Titelbild

Das Terminal ist das Herz eines Linux-Systems. Jedes Programm, das unter Linux läuft, wird über eine Terminal-Befehlszeile ausgeführt. Dazu gehören massive Programme wie Webbrowser und sogar einfache wie Texteditoren. Daher ist es wichtig, das Terminal richtig zu nutzen, wenn Sie verstehen möchten, wie das Betriebssystem funktioniert.

Während Sie im Linux-Terminal arbeiten, möchten Sie möglicherweise die Terminalausgabe eines Befehls in einer Datei speichern. Diese Datei kann als Information für eine andere Operation verwendet werden oder einfach dazu dienen, die Terminalaktivität zu protokollieren. Dieser Artikel zeigt fünf Möglichkeiten, die Terminalausgabe in einer Datei zu speichern.

Inhaltsverzeichnis

    1. Verwenden Sie spezifische Terminals
    1. Ausgabeumleitung
    1. Tee
    1. Skript
    1. Framebuffer-Terminalaufnahme
  • Häufig gestellte Fragen

Auch lesen: So verwenden Sie den dd-Befehl in Linux

1. Verwenden Sie spezifische Terminals

Die erste Möglichkeit, dies zu tun, besteht darin, ein Terminal zu verwenden, das das Speichern der Ausgabe in einer Datei unterstützt. Zum Beispiel enthält das Konsole-Terminal, das mit einer Standard-KDE-Installation geliefert wird, eine Option, um die Ausgabe in eine Datei zu schreiben.

Um dies zu tun, drücken Sie die Schaltfläche “Datei” in der Menüleiste und klicken Sie auf “Ausgabe speichern als … “

Terminalausgabedatei 05 Konsole Ausgabe speichern als

Dies öffnet ein Dialogfenster, in dem Sie die Terminalausgabe speichern können. Von dort aus können Sie auswählen, wo Sie die Datei speichern möchten.

Sie können auch die Ausgabe eines Befehls im GNOME-Terminal speichern. Klicken Sie einfach mit der rechten Maustaste auf das Terminal und drücken Sie “Ausgabe als HTML kopieren.” Dadurch wird der Terminaltext in Ihre Zwischenablage geladen. Von dort aus können Sie ihn in einen beliebigen Texteditor einfügen.

Terminalausgabedatei 06 Gnome Ausgabe als HTML kopieren

Auch lesen: So verwenden Sie den Rm-Befehl in Linux

2. Ausgabeumleitung

Eine weitere Möglichkeit, dies zu tun, besteht darin, die integrierten Operatoren der UNIX-Shell zu verwenden. Dies sind Standardfunktionen in Linux und können die Textausgabe eines Programms in eine Datei umleiten. Es gibt drei Operatoren, die dies tun können:

  • Der >-Operator erstellt entweder eine Datei oder ersetzt den Inhalt einer Datei mit der Ausgabe Ihres Programms. Dies ist nützlich, wenn Sie das aktuelle Ergebnis Ihres Programms in derselben Datei speichern und anzeigen möchten.
  • Der >>-Operator erstellt ebenfalls eine Datei mit der Ausgabe Ihres Programms. Dieser Operator fügt jedoch nur die Ausgabe hinzu, anstatt sie zu ersetzen. Dies ist nützlich, wenn Sie das Ergebnis Ihres Programms kontinuierlich in eine einzige Datei speichern möchten.
  • Schließlich ist der 2>-Operator eine spezielle Art von Operator, der Fehler ausgibt, die zurückgemeldet werden. Dies ist während des Debuggens sehr nützlich, da es das Problem zeigt, auf das das Programm gestoßen ist, bevor es abgestürzt ist.

Terminalausgabedatei 07 Beispielumleitung

Um diese Operatoren zu verwenden, fügen Sie sie am Ende Ihres Programms hinzu. Betrachten Sie das folgende Beispiel:

echo "maketecheasier" > hello.txt

Ich habe das echo-Programm angewiesen, das Wort “maketecheasier” auszugeben, und dann den >-Operator sowie einen Dateinamen hinzugefügt. Dies sagte der UNIX-Shell, dass die Ausgabe in die Datei “hello.txt” geschrieben werden soll, anstatt sie auf dem Bildschirm anzuzeigen.

Terminalausgabedatei 08 Hello Txt

3. Tee

Neben der Ausgabeumleitung können Sie die Ausgabe eines Terminalbefehls auch mit einem Programm namens tee speichern. Dies ist ein GNU-Programm, das es Ihnen ermöglicht, von und zu standardmäßigen Eingaben zu lesen und zu schreiben. Verwenden Sie dieses Programm mit UNIX-Pipes, um die Ausgabe eines Befehls in eine Datei zu schreiben.

Betrachten Sie das folgende Beispiel:

echo "maketecheasier" | tee hello.txt

Terminalausgabedatei 09 Tee Beispiel

Hier habe ich anstelle der Ausgabeumleitung die Ausgabe an tee weitergeleitet ( |).

Hinweis: Eine Pipe nimmt die Ausgabe eines Programms und leitet sie in die Eingabe eines anderen. Dies ermöglicht es Ihnen, mehrere Programme zusammenzufügen, solange sie alle standardmäßige Eingaben und Ausgaben verwenden.

Auch lesen: So beheben Sie das Problem, dass Sie nicht im Terminal tippen können, in Linux

4. Skript

Eine weitere Möglichkeit, die Ausgabe vom Terminal zu erhalten, ist das Programm script, ein integriertes Linux-Programm, das alles aufzeichnet, was Sie im Terminal eingeben, sowie dessen Ausgabe.

Sie können script verwenden, um das Protokoll Ihrer Terminal-Sitzung in einem analysierbaren Textformat aufzuzeichnen. Dies ist sehr nützlich, wenn Sie ein Fehlerprotokoll online senden möchten, um Unterstützung von anderen zu erhalten.

Um es zu verwenden, führen Sie den folgenden Befehl aus:

script filename.txt

Terminalausgabedatei 11 Start Skript Beispiel

Dies startet eine Skriptumgebung, in der Sie einfach Befehle ausführen können. Eine wichtige Sache, die zu beachten ist, ist, dass script alles aufzeichnet, was Sie in dieser Sitzung tun. Betrachten Sie das folgende Beispiel:

Script gestartet am 2022-03-27 18:02:29 +08:00 [TERM="rxvt-unicode-256color" TTY="/dev/pts/2" COLUMNS="77" LINES="22"]  
[?2004h[[1;31m balaraw:[1;35m~ [0m]$ ls  
[?2004l  
[0m[01;34mDesktop[0m    [01;34mDownloads[0m  [01;34mmail[0m  [01;34mNews[0m  [01;34mpods[0m  [01;34mdocuments[0m  [00;32mhello.txt[0m  [01;34mMail[0m  [01;34mpics[0m  [01;34mtmp[0m   [01;34mvids[0m  
[?2004h[[1;31m balaraw:[1;35m~ [0m]$ exit  
[?2004l  
exit  
  
Skript beendet am 2022-03-27 18:03:19 +08:00 [COMMAND_EXIT_CODE="0"]

Script enthält alle Tasteneingaben und Steuerzeichen, die Sie drücken. In meinem Fall wurden alle “unsichtbaren” Tasten, die ich gedrückt habe, einschließlich Tab- und Rücktasteingaben, aufgezeichnet.

Sobald Sie mit der Sitzung fertig sind, geben Sie exit ein. Dies beendet das Skriptprogramm und schreibt das gesamte Protokoll in die Datei, die Sie angegeben haben.

Terminalausgabedatei 12 Skript Cat

Auch lesen: So verwenden Sie den lp-Befehl in Linux, um Dateien aus dem Terminal zu drucken

5. Framebuffer-Terminalaufnahme

Schließlich können Sie die Ausgabe des Terminals auch erhalten, indem Sie vom Linux-Framebuffer abrufen. Dies ist nützlich, wenn Sie direkt an einem Teletype arbeiten und die Ausgabe eines Programms erfassen möchten.

Um das Framebuffer-Gerät zu erfassen, führen Sie den folgenden Befehl aus, während Sie sich im Teletype befinden:

cat /dev/fb0 > capture.raw

Terminalausgabedatei 13 Framebuffer Raw erfassen

Eine wichtige Sache, die zu beachten ist, ist, dass das Erfassen des Framebuffer-Geräts auf diese Weise bedeutet, dass Sie die Rohbytes des Framebuffers in eine Datei dumpen. Um diese Datei anzuzeigen, müssen Sie sie in einem Bildbearbeitungsprogramm laden und die Farbe und Farbtiefe manuell anpassen. Dieser Prozess ist nicht nur zeitaufwendig, sondern auch leicht falsch zu machen.

Eine Möglichkeit, damit umzugehen, besteht darin, ein Drittanbieterprogramm wie fbgrab zu verwenden. Dieses Programm erfasst den aktuellen Teletype-Bildschirm vom Framebuffer-Gerät und speichert ihn entweder in einer PPM- oder PNG-Datei.

Die Installation von fbgrab ist ebenfalls relativ einfach. In Debian- und Ubuntu-basierten Distributionen können Sie apt verwenden:

sudo apt install fbgrab

Für Arch Linux führen Sie pacman aus:

sudo pacman -S fbgrab

Terminalausgabedatei 14 Fbcat installieren

Verwendung von fbgrab zur Erfassung der Terminalausgabe

Sobald es installiert ist, wechseln Sie zum Teletype, indem Sie Strg + Umschalt + Alt + F3 drücken, und führen Sie dann entweder fbcat oder fbgrab aus.

Fbcat ist ein einfacheres Programm, das den aktuellen Framebuffer-Bildschirm erfasst und in einem PPM-Bild speichert. Dies ist ein niedrigstufiges Rohbildformat, das Sie in einem Bildbearbeitungsprogramm laden können, um es in PNG zu konvertieren. Fbcat ist hauptsächlich nützlich, wenn Sie versuchen, einen Bildschirm mit niedrigerer Farbtiefe zu erfassen, der ein Rohbildformat benötigt, um korrekt erfasst zu werden.

Um mit dem fbcat-Programm zu erfassen, führen Sie den folgenden Befehl aus:

fbcats > capture.ppm

Terminalausgabedatei 15 Capture Ppm

Fbgrab hingegen ist ein komplexeres Programm, das entwickelt wurde, um Displays mit höherer Farbtiefe zu erfassen. In den meisten Fällen verwenden Sie es, um Ihren Teletype-Bildschirm zu erfassen. Es unterstützt standardmäßig das Speichern in PNG und bietet die Möglichkeit, einen anderen Teletype auszuwählen, den Sie erfassen möchten.

Um mit dem fbgrab-Programm zu erfassen, führen Sie den folgenden Befehl aus:

sudo fbgrab -c3 capture.png

Terminalausgabedatei 16 Fbgrab Beispiel

Dies erfasst den dritten Teletype-Bildschirm und speichert ihn in einer Datei namens capture.png.

Wenn Sie nach weiteren Anleitungen für das Linux-Terminal suchen, schauen Sie sich das an, das das Senden einer E-Mail über die Befehlszeile behandelt.

Häufig gestellte Fragen

1. Hilfe! Fbgrab funktioniert nicht; das Bild ist einfach schwarz oder leer.

Das liegt wahrscheinlich daran, dass fbgrab ein anderes Framebuffer-Gerät verwendet, um die Terminalausgabe zu erfassen. Überprüfen Sie das aktuelle Framebuffer-Gerät, das das System verwendet, indem Sie den Ordner „/dev“ auflisten.

ls /dev

Suchen Sie von dort aus nach einem „/dev/fbX“-Gerät. Normalerweise verwendet Linux „/dev/fb0“ für sein Framebuffer. Wenn Ihr System jedoch ein anderes Framebuffer verwendet, wie z. B. „/dev/fb1“, können Sie den folgenden Befehl verwenden, um fbgrab anzuweisen, von diesem Framebuffer stattdessen abzurufen:

fbgrab -d1 capture.png

2. Ist es möglich, den Inhalt einer Datei zu erfassen, die ich als Eingabe für ein Programm geschrieben habe?

Ja! Neben den drei oben besprochenen Operatoren können Sie auch den <-Operator verwenden, um Daten aus einer Datei abzurufen. Die Shell behandelt dies dann als Eingabe für ein Programm.

Auf diese Weise entfällt auch die Notwendigkeit, sich auf andere Programme zu verlassen, um den Text für Sie auszudrucken. Betrachten Sie die folgenden Beispiele:

[1] cat test.txt | Programm  
[2] Programm < test.txt
  • Das erste Beispiel ruft das Programm cat auf, um den Text zu laden, und lädt dann einen Pipe-Operator mit der Ausgabe von cat und leitet ihn an Ihr Programm weiter.
  • Im zweiten Beispiel wird sofort Ihr Programm aufgerufen, und dann wird der <-Operator ausgewählt, der das nächste Argument als Eingabe behandelt.

3. Gibt es eine Möglichkeit, das Skript zu zwingen, nur die Ausgabe eines Befehls zu erfassen?

Ja, es ist möglich, das Skript nur für einen einzelnen Befehl zu verwenden. Dies ist während der Fehlersuche sehr nützlich, wenn Sie nur die Ausgabe eines einzelnen Programms erfassen möchten. Führen Sie dazu den folgenden Befehl aus:

script -c "your-command" test.txt

Das -c-Flag sagt dem Skriptprogramm, dass es nur das Programm ausführen soll: your-command. Von dort aus wird die Ausgabe dann in einer Textdatei namens test.txt geschrieben.

Bildnachweis: Unsplash