Prompt de cor da linha de comando do MySQL

20

Eu quero adicionar cores ao prompt de cor da linha de comando do MySQL.

Eu tenho até agora em um script (database.sh):

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

Gostaria que root fosse vermelho , @ fosse azul , localhost fosse verde e database para ser ciano :

root@localhost:database>

É possível fazer isso no meu script?

    
por EscoMaji 05.03.2012 / 19:34

4 respostas

14

Não ouça as pessoas que dizem que você não pode. Aqui:

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

Então:

$ colormysql -hHOSTNAME -uUSERNAME -pPASSWORD ...
    
por 20.06.2013 / 00:39
7

Demonstra passo a passo para configurar o prompt do mysql colorido.

Etapa 1. Entenda como fazer login normalmente com um prompt definido:

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> 

Etapa 2. Entenda como você pode canalizar uma expressão interpretada por meio de echo para "alias":

O que faz exatamente o mesmo que o passo 1 acima:

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

Etapa 3. Entenda como o echo -e avalia a expressão colorida:

Isso colore o "foobar >" prompt vermelho:

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

Assim:

Passo4.Sevocêestáconfusosobreoqueestáacontecendoaqui:

Vejaaexpressão:\x1B[31mfoobar>\x1B[0m

Temtrêspartes:

codewhatitmeans:\x1B[31mStartcolorizing,31misred.foobar>prompttext\x1B[0mStopcolorizing.

Etapa4.Avançado:Vamostornaropromptrealmenteinteressante:

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

Se você está confuso sobre o que esse código maciço faz:

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

Explicação:

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.

Então, uau. Muitos códigos.

    
por 29.07.2014 / 14:58
0

Eu queria que o prompt estivesse no título dos meus terminais, que é essencialmente o mesmo problema que querer um prompt colorido, apenas um código de escape diferente. Deparei com isso e me perguntei se poderia fazê-lo sem precisar lembrar de um alias especial como o colormysql etc mencionado nas respostas.

Adicionei o seguinte ao meu .bashrc , que é o truque da minha máquina:

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

o que isso faz é usar MYSQL_PS1 para gerar os caracteres de escape brutos (em vez dos simbólicos) para a variável %code% . Isso também deve funcionar com cores.

    
por 27.07.2015 / 13:21
-1

É uma resposta muito infeliz, mas você não pode.


Com relação ao uso de sequências de escape ANSI, o MySQL somente permite o seguinte :

You can use the escape sequences “\b”, “\t”, “\n”, “\r”, “\”, and “\s” in option values to represent the backspace, tab, newline, carriage return, backslash, and space characters.


Em relação à resposta do cmjdmiller, o grc só funciona para mostrar a saída do shell do MySQL através de um "pager".


O melhor que você pode fazer é usar rlwrap assim: %código%. Isso não lhe dará um controle refinado, pois ele colorirá o prompt inteiro. Também tenha cuidado porque exibe a senha em texto não criptografado.

    
por 10.05.2013 / 15:29