Oft (nicht immer) wird der Standard in Farben angezeigt. Normalerweise behalte ich jedes Ausgabeprotokoll auch in einer anderen Datei. Natürlich werden in der Datei die Farben nicht mehr angezeigt.
Ich würde gerne wissen, ob es eine Möglichkeit gibt (in Linux), die Ausgabe in eine Datei mit Farben zu schreiben. Ich versuche, tee
zu verwenden, um die Ausgabe von Vagrant in eine Datei zu schreiben. Auf diese Weise kann ich immer noch die Ausgabe sehen (wenn sie zutrifft). Ich möchte es speziell für Landstreicher verwenden (es kann sich natürlich in Zukunft ändern ...)
Vielen Dank!
Da viele Programme nur Farbsequenzen ausgeben, wenn ihre Standardausgabe ein Endgerät ist, ist eine generelle Lösung für dieses Problem erforderlich, um zu glauben, dass die Pipe, die sie schreiben, ein Endgerät ist. Dies ist mit dem Befehl script
von bsdutils möglich:
script -q -c "vagrant up" filename.txt
Dadurch wird die Ausgabe von vagrant up
in dateiname.txt (und das Terminal) geschrieben. Wenn Echo nicht erwünscht ist,
script -q -c "vagrant up" filename > /dev/null
schreibt es nur in die Datei.
Sie können die ANSI-Sequenzen, die Ihre Ausgabe farbig machen, in einer Datei speichern:
echo a | grep --color=always . > colour.txt
cat colour.txt
Einige Programme neigen jedoch dazu, nicht zu verwenden, wenn ihre Ausgabe nicht zum Terminal geht (deshalb musste ich --color-always
mit grep
verwenden).
Sie können Ihre Ausgabe auch mit Echo in verschiedenen Farben einfärben und die farbige Ausgabe in einer Datei speichern. Beispiel
echo -e '\E[37;44m'"Hello World" > my_file
Sie müssen auch mit den Farbcodes des Terminals vertraut sein
mit tee
< command line > |tee -a 'my_colour_file'
Öffnen Sie Ihre Datei in cat
cat 'my_colour_file'
Die Verwendung einer Named Pipe kann auch dazu dienen, alle Ausgaben der Pipe mit Farben in eine andere Datei umzuleiten
zum Beispiel
Erstellen Sie eine Named Pipe
mkfifo pipe.fifo
jede Befehlszeile leitet sie wie folgt an die Pipe weiter
<command line> > pipe.fifo
Leiten Sie in einem anderen Terminal alle Nachrichten von der Pipe in Ihre Datei um
cat pipe.fifo > 'my_log_file_with_colours'
Öffnen Sie Ihre Datei mit cat und sehen Sie die erwarteten Ergebnisse.
In Ubuntu können Sie das Paket bsdutils
installieren, um es in eine Textdatei mit ANSI-Farbcodes auszugeben:
script -q -c "ls --color=always" /tmp/t
Installieren Sie kbtin
, um eine saubere [~ # ~] HTML-Datei [~ # ~] zu erstellen:
ls --color=always | ansi2html > /tmp/t.html
Installieren Sie aha
und wkhtmltopdf
, um ein Nice [~ # ~] pdf [~ # ~] zu generieren:
ls --color=always | aha | wkhtmltopdf - /tmp/t.pdf
Verwenden Sie eine der oben genannten Optionen mit tee
, um die Ausgabe auch auf der Konsole anzuzeigen oder eine Kopie in einer anderen Datei zu speichern. Beispiel:
ls --color=always | tee /dev/stderr | aha | wkhtmltopdf - /tmp/test.pdf
Ich fand heraus, dass mit dem Tool ansi2html.sh
Ist der einfachste Weg, farbige Terminaldaten in eine HTML-Datei zu exportieren,
Die zu verwendenden Befehle sind:
ls --color=always | ansi2html.sh --palette=solarized > ~/Desktop/ls.html