MySQL 命令行颜色提示

MySQL 命令行颜色提示

我想给 MySQL 命令行颜色提示添加颜色。

到目前为止,我有一个脚本(database.sh):

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

我想root成为红色的@成为蓝色的localhost成为绿色的并且database青色

root@localhost:database>

我可以在我的脚本中做到这一点吗?

答案1

不要听信那些说你不行的人的话。这里:

$ 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 ...

答案2

设置彩色 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 将解释的表达式传送到“别名”:

其作用与上面的第 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

像这样:

在此处输入图片描述

步骤 4.如果您不清楚这里发生了什么:

看一下表情:\x1B[31mfoobar>\x1B[0m

它分为三个部分:

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

在此处输入图片描述

如果你对这段大段代码的作用感到困惑:

\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.

哇哦,好多代码啊。

答案3

我希望提示符出现在我的终端标题中,这本质上与想要彩色提示符的问题相同,只是转义代码不同。 偶然发现了这一点,想知道我是否可以做到这一点,而不必记住colormysql答案中提到的特殊别名。

我添加了以下内容,.bashrc这对我的机器有效:

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

它的作用是echo -e生成原始转义字符(而不是符号字符)给MYSQL_PS1变量。这也适用于颜色。

答案4

这是一个相当不幸的答案,但是你不能。


关于使用 ANSI 转义序列,MySQL 仅允许下列的

您可以在选项值中使用转义序列“\b”、“\t”、“\n”、“\r”、“\”和“\s”来表示退格符、制表符、换行符、回车符、反斜杠符和空格符。


关于 cmjdmiller 的回答,格鲁吉亚仅用于通过“分页器”显示来自 MySQL shell 的输出。


你能做的最好的就是使用右包裹像这样: rlwrap -a -p'GREEN' mysql -uroot -hlocalhost -A --prompt="\u@\h:\d> "。但是,这不会给你提供细粒度的控制,因为它会给整个提示着色。另外要小心,因为它会以明文形式显示密码。

相关内容