ANSIカラーでファイルを表示する

ANSIカラーでファイルを表示する

ANSI カラーのファイルがあります。

テスト.txt:
\e[0;31mExample\e[0m

このファイルの内容をターミナルに表示したいのですcatが、色も表示したいと思います。

答え1

私はまさにこの bash の質問に対する解決策を探していました。最もエレガントな解決策を提供してくれた @Thomas Dickey のコメントを見逃すところでした。

echo -e $(cat test.txt)

私にとってうまくいかなかったことがいくつかあります(どうやらエコーにパイプすることはできないようです)

cat test.txt | echo -e

または

less -R test.txt

私が抱えていたもう 1 つの問題は、echo -e がファイル内の改行と連続する空白をうまく印刷しなかったことです。これらを印刷するには、次のようにしました。

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

これは、test.txtファイルで機能します。

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

答え2

cat制御文字から色が表示されない場合は、おそらくそのままではありません。

一部のツールでは、制御文字は削除されますが、末尾は残ります。

比較する:

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

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

残ったものから制御シーケンスを再構築できるかもしれませんが、使用する正規表現によって意図しない文字シーケンスなどが誤って取り込まれる可能性があるため、完全ではありません。ただし、たとえば次のようになります。

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

例の文字列の色を復元します。

答え3

具体的には、次のことを実行する実行可能ファイルを含むパッケージがあります。

ttyrec

Debian由来のLinuxインストールにインストールするには、次のいずれかの方法を使用します。

sudo apt install ttyrec

またはRedHatのものでは

sudo yum install ttyrec

ファイルを適切に再生するコマンドは次のように実行されます。

ttyplay <filename>

また、同様のファイルを gif に変換する tty2gif というパッケージもチェックアウトしてください。

答え4

デフォルトで動作するはずです。たとえば、ls --color=always > /tmp/aと を実行するとcat /tmp/a、色が表示されます。 をチェックするとod、ファイルが ANSI カラーを使用していることが確認できます。

したがって、端末が ANSI カラーをサポートしているかどうか (および有効になっているかどうか) を確認する必要があると思います。

関連情報