端末に元のエスケープシーケンスを表示する方法はありますか? (例:色を制御するために使用されるもの)
私はこのUNIX.SE問題に遭遇し、「赤」出力をフィルタリングしたかったです(色によるコマンド出力のフィルタリング)
しかし、答えのコマンドは私の出力に対して機能しません(例:git status
「追跡されていないファイル」の赤)。彼らはそこの例のために働きますecho -e '\033[00;31mtest\033[00m' | grep --color=none '[[:cntrl:]]'
。フィルタリングはgrep --color=none '[[:cntrl:]]'
私の出力に適用されますが、テキストを別の色で表示することもできます。
私は私が見ている赤が別の赤であるに違いないと思いました\e[31m
。
ターミナル出力のネイティブエスケープシーケンスを持つ方法はありますか?(正しい順序で私が見ている特定の赤をフィルタリングできるように)
(Bash、Ubuntu 18.04)
- 更新 -
明確にするために、私の質問は元のエスケープシーケンスを表示する方法です。
@egmontの答えがうまくscript
いきます。デフォルトではscript
出力を記録し、上記の答えのいずれかを使用します。質問たとえば、赤いテキストを探します。
script /tmp/a.txt
git status
exit
cat /tmp/a.txt | grep -Eo $'\e\\[31m[^\e]*\e\\[[03]?m'
git
他の回答/コメントも私の使用がパイプを通して色を得られないことを正しく指摘しています。
答え1
あなたの質問を正しく理解したかどうかはわかりません。
私の考えでは、あなたが欲しいと思います。調査するユーティリティ(例git status
:)がターミナルエミュレータに送信するものです。私は正しいですか?
ユーティリティを起動するscript
と、正確にこの内容が記録されます。その後、電話git status
するか、好きなようにします。その後、シェルを終了すると、名前付きファイルが作成されたことがscript
わかります。typescript
必要なシーケンスを見つけるには、テキストエディタでこのファイルを開きます。
答え2
私は私が見ている赤が別の赤であるに違いないと思いました
\e[31m
。
あなたは間違って推測しました。
% ptybandage git 状態。 | grepルールECMA48デコード| 商標 SGR 31 「私」 「永久」 「D」 「私」 「F」 「私」 「金利」 「D」 ':' '' '' '' 「アル字型」 「あなた」 「エル」 「金利」 ~の SGR 0 CR もし % 子の状態。 | grepルールECMA48デコード| 商標 「私」 「永久」 「D」 「私」 「F」 「私」 「金利」 「D」 ':' '' '' '' 「アル字型」 「あなた」 「エル」 「金利」 ~の もし %
git
端末に書き込むことを考慮していないため、色は生成されません。
追加読書
- https://unix.stackexchange.com/a/283984/5132
- https://unix.stackexchange.com/a/249801/5132
- ジョナサンデボインポラード(2018)。 」
console-decode-ecma48
」。 スナックガイド。ソフトウェア。