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/a
色cat /tmp/a
が見えます。od
ファイルがANSI色を使用していることを確認してください。
したがって、あなたの端末がANSIの色をサポートしているか(そして有効になっているか)確認する必要があると思います。