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

私が持っているもう一つの問題は、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

またはRed Hatで

sudo yum install ttyrec

ファイルを正しく再生するコマンドは、次を使用することです。

ttyplay <filename>

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

答え4

デフォルトでは動作するはずです。たとえば、これを行うとls --color=always > /tmp/acat /tmp/aが見えます。odファイルがANSI色を使用していることを確認してください。

したがって、あなたの端末がANSIの色をサポートしているか(そして有効になっているか)確認する必要があると思います。

関連情報