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 ...
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?
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 ...
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.
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 -e
7\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.
É 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.