正規表現によるターミナル全体の色付け

正規表現によるターミナル全体の色付け

多くのプログラムがカラーを使用していることは知っています (vim、ack、color-ls など) が、それでも白黒でしか表示できない場合がまだ多くあります。

正規表現に基づいて出力を色分けするスクリプト(つまり、「'dog' に一致するものをすべて赤にする」)がありますが、これらはパイプを使用して呼び出す必要があります。たとえば、「> cat myfile | color dog red」などです。これは対話型の処理には役に立ちません。

私が探しているのは、ターミナル エミュレータ (または実際にこれを行うターミナル) をフックし、現在使用しているシェルやプログラムとは関係なく、特定の正規表現に一致するものをすべて色付けするものです。これが ncurses でも​​機能すれば素晴らしいと思います。モノクロのプログラムが多すぎるので、キーワードのリストを指定して、表示または入力されたときに強調表示/色付けできれば素晴らしいと思います。

私はおそらく GNOME ターミナルを使用する Guake コンソールを使用していますが、GNOME にこの機能がすでに備わっているかどうかはわかりません。

答え1

短縮版は次のとおりです:はい、他のプログラムと同様に、シェルからの出力をパイプすることができます。

そこから好きなものを使うことができます。

$ bash | sed "$(echo -e "s@dog@\e[31mdog\e[0m@g; s@more here@more here@g;")"

私の「虹」を追加しようと思いました。お楽しみください:

for((b=0;$b<8;b++)); do echo -ne "\e[4${b}m4$b : "; \
  for((f=0;$f<8;f++)); do echo -ne "\e[3${f}m3${f}"; done; echo -e "\e[0m"; done

答え2

私はまだこの機能を備えた Linux ターミナル エミュレーターを探していますが、これを読んでいて macOS X を使っている人のために:

  • 得るiTerm2(OS X で多くのコマンド ライン作業を行っている場合は、いずれにしてもこれが必要になります)、「設定 > プロファイル > 詳細」に移動し、「トリガー」の下の「編集」をクリックします。そこで、次のような正規表現を使用してトリガーを追加し^.*\[ERROR\].*$、アクションを「テキストの強調表示」に設定し、パラメーターを「赤色の前景」などに設定できます。

答え3

おそらくこれよりも良い解決策があるでしょうが、expect を使えば簡単な解決策が見つかるかもしれません:翻訳:http://expect.nist.gov/TCL を避けたい場合は、他の多くのプログラミング/スクリプト言語用の expect ライブラリが利用可能です。

一般的に、TCL は対話型プログラムを自動化するために使用されますが、対話型にすることも可能です。

最初にいくつかのコードを提供しますが、私自身はしばらく使用していません。

答え4

KDE Konsole (少なくとも KDE3 バージョン) ではこれが実行できると確信していますが、KDE4 ではサポートされていないようです。

あなたできるgrep を使って次のように操作します。

grep -C 99999 --color <whatever>

これにより、一致が強調表示されますが、ファイル全体に相当するほど多くのコンテキストが含まれます。

関連情報