一般ビュー:
\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の出力をラップする方法は?
![](https://habrastorage.org/storage2/76d/801/388/76d801388446c00f89fc25e184801ed5.png)
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] 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の利点:
結果を水平にスクロール
(実際には、垂直も)ユーザーnektとDaedmenのヒントで:
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