Quiero agregar colores a la línea de comandos de MySQL.
Tengo hasta ahora en un script (database.sh):
mysql -uroot -hlocalhost -A --prompt="\u@\h:\d> "
Me gustaría rootser rojo , @ser azul , localhostser verde y databaseser cian :
root@localhost:database>
¿Es posible hacer esto en mi script?

Respuestas:
No escuches a las personas que dicen que no puedes. Aquí:
Luego:
fuente
$(foo)ejecuta el resultado de foo, en este caso la salida de echo. El -e to echo expande el \ x1b en un carácter de escape. El \ x1b [31m es un código de control de terminal que establece el color actual en rojo. Etcétera. \ x1b [0m devuelve el color al color del terminal predeterminado.mysql --prompt="`echo -e '\033[01;32m\\d\033[01;34m >\033[00m '`"\001y\002alrededor de las secuencias para unreadlinesoporte adecuado .$ 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 haber algún tipo de problema de representación con copiar y pegar que desde el navegador, donde la\002:\001parte del comando se coloca en el portapapeles como\002:\<200c><200b>001(donde<200c>y<200b>son caracteres que no se imprimen, probablemente el CR / NL de word- envase).Tutorial sobre la configuración del indicador mysql coloreado.
Paso 1. Comprende cómo iniciar sesión normalmente con un indicador de configuración:
Paso 2. Comprende cómo puedes canalizar una expresión interpretada a través de echo a 'alias':
Que hace exactamente lo mismo que el paso 1 anterior:
Paso 3. Comprende cómo echo -e evalúa la expresión coloreada:
Esto colorea el indicador "foobar>" en rojo:
Me gusta esto:
Paso 4. Si estás confundido sobre lo que está sucediendo aquí:
Mira la expresión:
\x1B[31mfoobar>\x1B[0mTiene tres partes:
Paso 4. Avanzado, hagamos que el mensaje sea realmente agradable:
Si no está seguro de lo que hace este código masivo:
Explicación:
Así que wow Mucho código.
fuente
readlineno se confunda la longitud de la línea ymysqlsea posible editar varias líneas en la línea de comando? (intente escribir varias líneas, luego mantenga presionada la tecla de retroceso)Quería que el mensaje estuviera en el título de mis terminales, que es esencialmente el mismo problema que querer un mensaje de color, solo un código de escape diferente. Encontré esto y me pregunté si podría hacerlo sin tener que recordar un alias especial como el
colormysqletc. mencionado en las respuestas.He agregado lo siguiente a mi
.bashrcque hace el truco en mi máquina:export MYSQL_PS1=$(echo -e "\033]0;\u@\h [\d]\007\u@\h [\d]> ")lo que esto hace es usar
echo -epara generar los caracteres de escape sin procesar (en lugar de los simbólicos) a laMYSQL_PS1variable. Esto también debería funcionar con colores.fuente
Es una respuesta bastante desafortunada, pero no puedes.
Con respecto al uso de secuencias de escape ANSI, MySQL solo permite lo siguiente :
Con respecto a la respuesta de cmjdmiller , grc solo funciona para mostrar la salida del shell de MySQL a través de un "localizador".
Lo mejor que podría hacer es el uso rlwrap como esto:
rlwrap -a -p'GREEN' mysql -uroot -hlocalhost -A --prompt="\u@\h:\d> ". Sin embargo, esto no le dará un control detallado, ya que colorea todo el mensaje. También tenga cuidado porque muestra la contraseña en texto sin cifrar.fuente