Ich habe eine Datei mit ANSI-Farben.
Datei test.txt:
\e[0;31mExample\e[0m
Ich möchte den Inhalt dieser Datei wie cat
hier 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
cat
Wenn 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/a
und dann mache cat /tmp/a
, sehe ich die Farben. Die Überprüfung mit od
bestä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).