コンソールの標準出力でカラー出力を見たいのですが、tee
コマンド出力のキャプチャされたコピーからそれを削除したいと思います。私
標準出力に色を書き込むコマンド|ティー文書
ファイルにANSIカラーシーケンスなどがあってはなりません。これはgrep
後でログファイルが面白くなるからです。
echo -e "color \033[1;31mRED\033[0m output" | tee test.log
この場合、色はコンソールと「test.log」ファイルに記録されます。
color ^[[1;31mRED^[[0m output
tee
ファイル出力に対してのみANSIシーケンスを削除する方法はありますか?
私の端末を見ようとしてティーを取得しようとすると、色(環境変数、サブシェル)についてはわかりませんが、tee
それが私に与えたものを幸せにしました。私はコンソール出力の色(人が消費するのに良い)を望んでいますが、出力のログファイルのコピーの色は望ましくありません。
echo -e "color \033[1;31mRED\033[0m output" | TERM=dumb tee test.log ; od -c test.log
たくさんの人を見つけました。考える「パイプツーティー」出力でカラーコードを使用していますが(通常、最初のプログラムが色を表示できることがわかっている場合)、その逆の質問/回答が見つかりませんでした。
答え1
Bashを使用している場合は、次のコマンドを使用してすべての色を削除できます(グラフィック再生)。
echo -e "color \033[1;31mRED\033[0m output" | tee >(sed $'s/\033[[][^A-Za-z]*m//g' > test.log)
またはみんなANSIエスケープシーケンス
echo -e "color \033[1;31mRED\033[0m output" | tee >(sed $'s/\033[[][^A-Za-z]*[A-Za-z]//g' > test.log)
(これをテストしましたが、完全ではありません。)
PSログファイルに追加するには、>> test.log
括弧内に追加してくださいtee -a
。
答え2
そしてzsh
、ansi2txt
カラーログ1:
標準出力に色を書き込むコマンド>&1 > >(ansi2txt >文書)
zshは、fdが書き込みのために複数回リダイレクトされるときにteeと同様の動作を実装します。
¹同じ名前のパッケージでDebian / Ubuntuにありますが、注意してください。アルゴリズムがかなり粗い、望むよりスクリプト出力から制御文字(コンソールコード/色付き)を削除するより微細でより硬いカラーフィルターの場合。