Wie schreibe ich die Ausgabe von Portage in eine txt-Datei?

Wie schreibe ich die Ausgabe von Portage in eine txt-Datei?

Ich möchte die Ausgabe von Portage-Befehlen und anderen Befehlen, die ich in tty ausführe (das sind die bildschirmbreiten Terminals, die mit Ctrl+ Alt+ gestartet werden , wobei n eine Ganzzahl zwischen 1 und 6 darstellt. Diese Terminals werden meines Wissens mit dem Befehl gestartet), wo es keine Zwischenablage gibt, in eine Textdatei schreiben können. Jetzt lese ich auf derFngettyUbuntu-Forendass der Unix-Befehl catdies vielleicht kann, wenn er richtig verwendet wird. Leider scheint das Befolgen des dort vorgeschlagenen Befehls nicht die vollständige Ausgabe des emergeBefehls in eine Textdatei zu schreiben. Ich habe Folgendes ausgeführt:

emerge dev-qt/qtwayland > cat >> /home/fusion809/output.txt

wobei fusion809 mein Benutzername ist, und es wurden nur vier Ausgabezeilen in output.txt geschrieben, nämlich:

Calculating dependencies  ....... .. ....... done!
[ebuild   R    ] media-libs/mesa-11.0.4  USE="-wayland*" ABI_X86="32*"
[ebuild   R    ] dev-qt/qtgui-5.5.1  USE="-egl* -evdev* -ibus*"
[ebuild   R    ] dev-qt/qtwayland-5.5.1  USE="-egl*"

Ich habe auch versucht:

emerge dev-qt/qtwayland > /home/fusion809/output.txt

Und:

emerge dev-qt/qtwayland >> /home/fusion809/output.txt

beide haben die gleiche Ausgabe in output.txt geschrieben.

Antwort1

Sie sind auf dem richtigen Weg. Unter Unix/Linux gibt es auch einen Fehlerstrom. Jeder Befehl erhält Standardeingabe, Standardausgabe und Standardfehler.

Sie haben mit der Standardausgabe gearbeitet. Um auch den Standardfehlerstrom des Befehls zu erfassen, verwenden Sie 2>. Beispiel:

emerge dev-qt/qtwayland > emerge.out 2> emerge.err

Wenn Sie nun die Standardausgabe wünschenUndFehler beim Eintreten in dieDasselbeDatei, verwenden Sie 2>&1diese, um der Shell mitzuteilen, dass die Standardfehlerausgabe an denselben Ort gesendet werden soll wie die Standardausgabe:

emerge dev-qt/qtwayland > emerge.out 2>&1

Wenn Sie weitere Referenzen benötigen und mehr erfahren möchten, können Sie jederzeit auf der Manpage der Shell nachschauen man sh.

Danke für die informative und gut durchdachte Frage!

Antwort2

  1. Sie brauchen das dort nicht > cat. Tatsächlich wird dadurch nur eine weitere Datei mit dem Namen catim aktuellen Verzeichnis erstellt. Und wenn Sie eigentlich eingeben wollten | cat, ist das überflüssig, da Sie die Ausgabe umleiten können, ohne sie durch cat zu leiten.

  2. emerge dev-qt/qtwayland > /home/fusion809/output.txtwird sparenALLEder Standardausgabe Ihres emergeBefehls in /home/fusion809/output.txt... ALLES. Wenn die Datei nur 4 Zeilen enthält, liegt das daran, dass emergenur 4 Zeilen in die Standardausgabe gedruckt wurden.

  3. emerge hat möglicherweise mehr Material in ausgegeben stderr. Wenn Sie das auch erfassen möchten, versuchen Sie es mit emerge dev-qt/qtwayland >& /home/fusion809/output.txt. Dadurch werden sowohl stdout als auch stderr in dieselbe Datei umgeleitet.

  4. der Unterschied zwischen >und >>besteht darin, dass >die Datei vor dem Erstellen gelöscht wird, falls sie vorhanden ist, und >>an die Datei angehängt wird, falls sie bereits vorhanden ist, bzw. sie erstellt wird, falls dies nicht der Fall ist (abhängig von den Shell-Optionen).

  5. wenn Sie die Ausgabe in einer Datei speichern möchtenUNDgleichzeitig auf dem Bildschirm sehen möchten, verwenden Sie tee. Beispiel:

emerge dev-qt/qtwayland |& tee -a /home/fusion809/output.txt

teeDie Option von -aweist darauf hin, dass angehängt werden soll, anstatt zu löschen und zu überschreiben.

verwandte Informationen