web-dev-qa-db-ja.com

MySQLコマンドラインの色プロンプト

MySQLコマンドラインの色プロンプトに色を追加したい。

これまでのところ、スクリプト(database.sh)を使用しています。

mysql -uroot -hlocalhost -A --Prompt="\u@\h:\d> "

rootred@bluelocalhostgreendatabaseシアン

root@localhost:database>

スクリプトでこれを行うことはできますか?

22
EscoMaji

できないと言う人の言うことを聞かないでください。ここに:

$ alias colormysql=$(echo -e 'mysql --Prompt="\x1B[31m\\u\x1B[34m@\x1B[32m\\h\x1B[0m:\x1B[36m\\d>\x1B[0m "')

次に:

$ colormysql -hHOSTNAME -uUSERNAME -pPASSWORD ...
14
dossy

色分けされたmysqlプロンプトの設定に関するチュートリアル。

ステップ1.設定されたプロンプトで通常のログイン方法を理解する:

eric@dev ~ $ mysql --Host=yourhost.com -u username --Prompt="foobar> " -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 711
Server version: 5.6.19 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

foobar> 

ステップ2.解釈された式をechoから 'alias'にパイプする方法を理解する:

上記のステップ1とまったく同じです。

eric@dev ~ $ alias penguins=$(echo -e 'mysql --Host=yourhost.com -u dev --Prompt="foobar> " -p')
eric@dev ~ $ penguins
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 713
Server version: 5.6.19 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

foobar> exit
Bye
eric@dev ~ $

ステップ3. echo -eが色付けされた式を評価する方法を理解する:

これにより、 "foobar>"プロンプトが赤色になります。

alias penguins=$(echo -e 'mysql --Host=yourhost.com -u dev --Prompt="\x1B[31mfoobar>\x1B[0m " -p')
penguins

このような:

enter image description here

ステップ4.ここで何が行われているのか混乱している場合:

式を見てください:\x1B[31mfoobar>\x1B[0m

3つの部分があります。

code               what it means:

\x1B[31m           Start colorizing, 31m is red.
foobar>            Prompt text
\x1B[0m            Stop colorizing.

ステップ4.高度、プロンプトを本物にしてみましょう:

eric@dev ~ $ alias penguins=$(echo -e 'mysql --Host=yourhost.com -u dev --Prompt="\x1B[31m\\u\x1B[34m@\x1B[32m\\v\x1B[0m:\x1B[36m\\d>\x1B[0m " -p')
eric@dev ~ $ penguins

enter image description here

この大規模なコードが何をするかについて混乱している場合:

\x1B[31m\\u\x1B[34m@\x1B[32m\\v\x1B[0m:\x1B[36m\\d>\x1B[0m

説明:

Code         Note
\x1B[31m     Start colorizing red
\\u          escape the backslash for passage through echo, and print username
\x1B[34m     Start colorizing dark blue
@            literal at sign
\x1B[32m     Start colorizing green
\\v          escape the backslash for passage through echo, print server version
\x1B[0m      Stop colorizing
:            literal colon
\x1B[36m     Start colorizing cyan
\\d>         Backslash for passage through echo, print default db and >
\x1B[0m      Stop colorizing.

すごい。多くのコード。

8
Eric Leschinski

プロンプトを端末のタイトルにしたかったのですが、これは基本的に、色の付いたプロンプトが必要なのと同じ問題ですが、エスケープコードが異なるだけです。これに遭遇し、答えで言及されているcolormysqlなどのような特別なエイリアスを覚えていなくてもそれができるかどうか疑問に思いました。

私のマシンでトリックを実行する_.bashrc_に以下を追加しました:

export MYSQL_PS1=$(echo -e "\033]0;\u@\h [\d]\007\u@\h [\d]> ")

これは、_echo -e_変数に(記号的な文字ではなく)生のエスケープ文字を生成するために_MYSQL_PS1_を使用することです。これは色でも機能するはずです。

0
Marlies