コンソールでのmysql-clientの出力の色付け

色と音は、コンソールを常に操作しながら、管理者の平日を飾り、促進できる小さな喜びです。 色情報の出力は、いわゆるエスケープシーケンスによって規制されます。エスケープシーケンスは、特にテキストの色と背景色を決定します。



一般ビュー: \033[Xm



、Xはパラメーター値(数字)です。 たとえば、 echo -ne "\033[34mHELLO"



は "HELLO"を青で表示します。 色とその他の利用可能なパラメーター(下線、点滅など)の表は、ECMA-48 Set Graphics Renditionセクションのman console_codes



ドキュメントにあります。 通常、色のサポートはアプリケーション自体に統合されていますが、mysql-clientはこれらのプログラムの1つではありません。



インターネットでは、mysqlコンソールを装飾するという質問に何度も出会ったが、どこにもレシピはなかった。 「ラッパーになる」または「ソースコードを調べる」という一般的な単語のみ。 StackOverflowに関するこのような質問は、2年以上も答えられずに生き続けてきました! 「Lived」は、答えが見つかったため、過去形で特別に使用されました。



grcユーティリティが役立ちます。 ほとんどのディストリビューションで利用でき、多くの人が知っています。 しかし、mysql-clientの出力をラップする方法は?







grcユーティリティ(Generic Colorizer)は、実際には、指定されたコマンドを実行し、構成に従ってgrcatに出力を送るgrcatのラッパーです。 grcatを直接必要とします。grcatには、構成が書き込まれ、小さなmysql-client構成も書き込まれます。



mysql-clientの出力を単にgrcatに送信することの問題は何ですか? または単にgrc mysql



使用します...? mysql-clientがコマンドの呼び出し元の環境を認識すること。 インタラクティブに使用される場合、表形式のマークアップが表示されます。 呼び出しがスクリプトから行われた場合、またはデータストリームが別のプログラムに送信された場合、出力からテーブルレイアウトを削除し、タブを使用します。 簡単な例:



 $ mysql test -e "select * from test_table" +----+-------+ | id | value | +----+-------+ | 1 | a | +----+-------+
      
      







 $ mysql temp -e "select * from test_table" | cat - id value 1 a
      
      







最初のケースでは、コンソールの出力を使用し、テーブルが表示されます。 2番目では、catを介して出力をリダイレクトしますが、テーブルは魔法のように消えます。



ユーザーのtruezemezが 解説示唆したように、テーブル出力は--table



オプションを使用して保存できます。
この場合、出力をgrcにリダイレクトすることもできます。



そして、 黒いマントがmysqlのドキュメントを読んで救いに来ます。 mysql-clientでは、画面に結果を表示するPAGERパラメーターを設定できます。 そこでgrcatを記述して使用します。 構成ファイルを指定することを忘れないでください。 〜/ .my.cnfファイルのスニペットを次に示します。



 [mysql] pager = grcat ~/.grcat
      
      







設定でPAGERを設定する必要はありません。毎回手で入力できますが、これはアマチュアです



 mysql> pager grcat ~/.grcat PAGER set to 'grcat ~/.grcat'
      
      







私たちがやるべきことは、出力中にmysqlテーブルを認識し、配色を適用するようにgrcatの設定を発行することだけです。 〜/ .grcatパスに沿って検索する必要があることを上記で示しました。 構成はパラメーターのグループで構成され、正規表現と色が必要です。 パラメーターはマイナスで区切られ、ラティスはコメントです。 ユーティリティは、正規表現が現在の行と一致するかどうかを確認し、指定した色を一致の結果に適用します。 パラメーターcount=stop



が構成で指定されている場合、正規表現が一致すると、プログラムは出力テキストの次の行に進みます。 count=stop



がない場合count=stop



これらの設定は順番に適用されます。 そのような構成は次のとおりです。



 #        \G regexp=[*]+.+[*]+ count=stop colours=white - #  regexp=[+\-|]+ colours=red - #    regexp=[\w\.]+ colours=green - #   ( )   ' ' regexp=\([\w\d,']+\) colours=white - # regexp=\s[\d\.]+\s colours=yellow - #       \G regexp=\w+: colours=white - # regexp=\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2} colours=cyan - #IP regexp=(\d{1,3}\.){3}\d{1,3}(:\d{1,5})? colours=cyan - #,        ` ` regexp=`\w+` colours=yellow - #email regexp=[\w\.\-_]+@[\w\.\-_]+ colours=magenta
      
      







grcatユーティリティ自体はpythonで書かれており、アマチュアはコードをスパイし、必要に応じて設定を書くことができます。 残りについては、 man grc



ドキュメントと、 サンプル付きの優れたチュートリアルがあります。



構成ファイルはgithubで入手できます。 StackOverflowに関する上記の質問への回答には、同じリンクが提供されています



また、mysql-clientの利点:



結果を水平にスクロール

(実際には、垂直も)ユーザーnektDaedmenのヒントで:

pager = grcat ~/.grcat | less -RS





-Sフラグは水平スクロールをアクティブにし、-Rは色をスクロールします。



ユーザーwickedweaselのおかげで、より興味深いフラグが少なくなりました

-Fは、すべてが1つの画面に収まる場合は終了しません

-i検索するケースを無視

-nは行番号を削除します

-Xはlessを終了した後に画面をクリアしません。これはコンソールで便利です-前のリクエストの結果を見ることができます



ページャーで他にできること:

www.mysqlperformanceblog.com/2008/06/23/neat-tricks-for-the-mysql-command-line-pager

mysql-clientで便利な挨拶を設定する:

www.ultraquantix.com/blog/2008/12/making-the-mysql-prompt-more-useful



All Articles