Anzeigedatei mit ANSI-Farben

Anzeigedatei mit ANSI-Farben

Ich habe eine Datei mit ANSI-Farben.

Datei test.txt:
\e[0;31mExample\e[0m

Ich möchte den Inhalt dieser Datei wie cathier in einem Terminal anzeigen, aber ich möchte auch die Farben anzeigen.

Antwort1

Ich suchte nach einer Lösung für genau diese Bash-Frage. Fast hätte ich den Kommentar von @Thomas Dickey übersehen, der mir die eleganteste Lösung lieferte.

echo -e $(cat test.txt)

Einige Dinge, die bei mir nicht funktioniert haben, sind (anscheinend kann man Dinge nicht an Echo weiterleiten):

cat test.txt | echo -e

oder

less -R test.txt

Ein weiteres Problem, das ich hatte, war, dass echo -e Zeilenumbrüche und zusammenhängende Leerzeichen innerhalb der Datei nicht sauber druckte. Um diese zu drucken, habe ich Folgendes verwendet.

echo -ne $(cat test.txt | sed  's/$/\\n/' | sed 's/ /\\a /g')

Dies funktioniert für eine test.txt-Datei mit

\e[0;31mExa         mple\e[0m
\e[0;31mExample line2\e[0m

Antwort2

catWenn Sie keine Farbe von den Steuerelementen sehen, sind die Zeichen wahrscheinlich nicht intakt.

Einige Tools entfernen Steuerzeichen, belassen das Ende jedoch.

Vergleichen:

 echo -e "\e[0;31mExample\e[0m foo"

Zu

 echo -e "[0;31mExample[0m foo" 

Sie können die Steuersequenz möglicherweise aus dem, was übrig bleibt, neu erstellen. Dies ist jedoch nicht narrensicher, da der von Ihnen verwendete reguläre Ausdruck möglicherweise unbeabsichtigte Zeichenfolgen usw. einfügt. Aber zum Beispiel:

echo -e "[0;31mExample[0m foo" | sed "s:\[\([0-9]*[;m]\):^[[\1:g"

würde die Farbe der Beispielzeichenfolge wiederherstellen.

Antwort3

Es gibt ein Paket, das eine ausführbare Datei enthält, die speziell dies tut:

ttyrec

Sie können es auf Debian-basierten Linux-Installationen installieren mit entweder

sudo apt install ttyrec

oder auf RedHat mit

sudo yum install ttyrec

Der Befehl zum ordnungsgemäßen Abspielen einer Datei wird ausgeführt mit

ttyplay <filename>

Testen Sie auch das Paket „tty2gif“, das ähnliche Dateien in das GIF-Format konvertiert.

Antwort4

Es sollte standardmäßig funktionieren. Wenn ich beispielsweise ls --color=always > /tmp/aund dann mache cat /tmp/a, sehe ich die Farben. Die Überprüfung mit odbestätigt, dass die Datei ANSI-Farben verwendet.

Daher sollten Sie meiner Meinung nach überprüfen, ob Ihr Terminal ANSI-Farben unterstützt (und ob diese aktiviert sind).

verwandte Informationen