Quero adicionar cores ao prompt de cores da linha de comando do MySQL.
Eu tenho até agora em um script (database.sh):
mysql -uroot -hlocalhost -A --prompt="\u@\h:\d> "
Eu gostaria root
de ser vermelho , @
para ser azul , localhost
a ser verde e database
ser ciano :
root@localhost:database>
É possível fazer isso no meu script?
Respostas:
Não dê ouvidos a pessoas que dizem que você não pode. Aqui:
Então:
fonte
$(foo)
executa o resultado de foo, neste caso, a saída do eco. O eco -e expande o \ x1b em um caractere de escape. O \ x1b [31m é um código de controle de terminal que define a cor atual para vermelho. E assim por diante. \ x1b [0m retorna a cor à cor padrão do terminal.mysql --prompt="`echo -e '\033[01;32m\\d\033[01;34m >\033[00m '`"
\001
e\002
ao redor das seqüências para obter oreadline
suporte adequado .$ alias colormysql=$(echo -e 'mysql --prompt="\001\x1B[31m\002\\u\001\x1B[34m\002@\001\x1B[32m\002\\h\001\x1B[0m\002:\001\x1B[36m\002\\d>\001\x1B[0m\002 "')
Parece haver algum tipo de problema de renderização ao copiar e colar no navegador, onde a\002:\001
parte do comando está sendo colocada na área de transferência como\002:\<200c><200b>001
(onde<200c>
e<200b>
são caracteres não imprimíveis, provavelmente o CR / NL do word- invólucro).Passo a passo sobre como configurar o prompt mysql colorido.
Etapa 1. Entenda como efetuar login normalmente com um prompt definido:
Etapa 2. Entenda como você pode canalizar uma expressão interpretada através de eco para 'alias':
Que faz exatamente o mesmo que a etapa 1 acima:
Etapa 3. Entenda como echo -e avalia a expressão colorida:
Isso mostra o prompt "foobar>" em vermelho:
Como isso:
Etapa 4. Se você está confuso sobre o que está acontecendo aqui:
Veja a expressão:
\x1B[31mfoobar>\x1B[0m
Tem três partes:
Etapa 4. Avançado, vamos fazer o prompt muito bom:
Se você está confuso sobre o que esse código massivo faz:
Explicação:
Então uau. Muitos códigos.
fonte
readline
não se confunda com o comprimento da linha emysql
que seja possível editar várias linhas na linha de comando? (tentar escrever várias linhas, pressione em seguida, e backspace espera)Eu queria que o prompt estivesse no título dos meus terminais, que é essencialmente o mesmo problema que desejar um prompt colorido, apenas um código de escape diferente. Me deparei com isso e me perguntei se eu poderia fazer isso sem ter que me lembrar de um apelido especial como o
colormysql
etc mencionado nas respostas.Eu adicionei o seguinte ao meu,
.bashrc
que faz o truque na minha máquina:export MYSQL_PS1=$(echo -e "\033]0;\u@\h [\d]\007\u@\h [\d]> ")
o que isso faz é usar
echo -e
para gerar os caracteres de escape brutos (em vez dos simbólicos) para aMYSQL_PS1
variável. Isso também deve funcionar com cores.fonte
É uma resposta bastante infeliz, mas você não pode.
Em relação ao uso de seqüências de escape ANSI, o MySQL permite apenas o seguinte :
Com relação à resposta do cmjdmiller, o grc funciona apenas para exibir a saída do shell do MySQL através de um "pager".
O melhor que você pode fazer é usar rlwrap assim:
rlwrap -a -p'GREEN' mysql -uroot -hlocalhost -A --prompt="\u@\h:\d> "
. No entanto, isso não lhe dará um controle refinado, pois colorirá todo o prompt. Também tenha cuidado, pois exibe a senha em texto não criptografado.fonte