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 root
ser rojo , @
ser azul , localhost
ser verde y database
ser 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 '`"
\001
y\002
alrededor de las secuencias para unreadline
soporte 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:\001
parte 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[0m
Tiene 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
readline
no se confunda la longitud de la línea ymysql
sea 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
colormysql
etc. mencionado en las respuestas.He agregado lo siguiente a mi
.bashrc
que 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 -e
para generar los caracteres de escape sin procesar (en lugar de los simbólicos) a laMYSQL_PS1
variable. 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