Página principal » cómo » Cómo personalizar (y colorear) tu mensaje de Bash

    Cómo personalizar (y colorear) tu mensaje de Bash

    La mayoría de las distribuciones de Linux configuran el indicador de Bash para que se parezca a nombre de usuario @ nombre de host: directorio $ . Pero puede configurar el indicador de Bash para que contenga lo que quiera e incluso elegir los colores que desee..

    Los pasos de ejemplo aquí se realizaron en Ubuntu 16.04 LTS. El proceso debe ser el mismo en otras distribuciones de Linux, aunque la configuración y el mensaje de Bash predeterminados en el archivo .bashrc pueden ser un poco diferentes.

    Donde se almacena la variable pronta

    La configuración de la solicitud de Bash se almacena en el archivo .bashrc de su cuenta de usuario, que se encuentra en ~ / .bashrc. Entonces, si su nombre de usuario es bob, el archivo está en /home/bob/.bashrc.

    Puede abrir el archivo para ver la variable de Bash actual. Usaremos nano como nuestro editor de texto de ejemplo, aunque también puede usar vi, emacs o cualquier otro editor de texto con el que se sienta cómodo. Abra una Terminal y ejecute:

    nano ~ / .bashrc

    Desplácese hasta la PS1 = sección. La primera variable parece bastante complicada porque incluye información de color; eso lo explicaremos más adelante. La segunda variable, sin información de color, dice lo siguiente:

    $ debian_chroot: + ($ debian_chroot) \ u @ \ h: \ w \ $

    Esto todavía es un poco complicado debido a la $ debian_chroot: + ($ debian_chroot) pedacitos Solo le dicen a Bash que le avise si está usando un entorno chroot de Debian y que normalmente no se mostrará. Ignorando esos, aquí está la estructura por defecto de la variable de petición de Bash:

    \ u @ \ h: \ w \ $

    \ u indica tu nombre de usuario, @ indica el signo @, \ h indica el nombre de host (nombre de la computadora), : indica el: caracter, \ w indica el directorio de trabajo, y PS indica $ si eres una cuenta de usuario normal o # si eres root. Entonces, al juntar todo eso, obtienes nombre de usuario @ nombre de host: directorio_trabajo $.

    Para cambiar el indicador de Bash, solo tiene que agregar, eliminar o reorganizar los caracteres especiales en la variable PS1. Pero hay muchas más variables que puedes usar que las predeterminadas..

    Deje el editor de texto por ahora en nano, presione Ctrl + X para salir. Le mostraremos cómo experimentar con variables antes de escribir una nueva en su archivo .bashrc.

    Cómo crear un aviso de bash personalizado

    La configuración de la solicitud de Bash se almacena en la variable PS1. Para guardar el contenido de la variable PS1 en una nueva variable, ejecute el siguiente comando:

    DEFAULT = $ PS1

    Ahora puede configurar la variable PS1 a diferentes valores para experimentar. Por ejemplo, la primera línea aquí establecerá su solicitud en un mensaje básico de "usuario $", mientras que la segunda establecerá su solicitud en un mensaje básico de "usuario: directorio_trabajo $".

    PS1 = "\ u \ $" PS1 = "\ u: \ w \ $"

    Si alguna vez desea volver a su indicador predeterminado, simplemente ejecute el siguiente comando.

    PS1 = $ DEFAULT

    Bash se restaurará a su mensaje predeterminado gracias al hecho de que guardó esa configuración predeterminada anteriormente. Tenga en cuenta que cualquier cambio que realice aquí es solo temporal para la sesión actual de Bash, por lo que siempre puede cerrar sesión, volver a iniciarla, cerrarla y volver a abrir la ventana de la terminal para volver a su mensaje predeterminado. Pero la línea anterior hace posible volver fácilmente a tu mensaje de Bash predeterminado sin la molestia de cerrar sesión o cerrar una ventana.

    Puede agregar cualquier carácter o texto a la variable. Por lo tanto, para prefijar el mensaje predeterminado con "Hello World", puede utilizar:

    PS1 = "Hola mundo \ u @ \ h: \ w \ $"

    Ahora que ya tienes lo básico, solo necesitas saber qué son todos los caracteres especiales. Probablemente no le interesen muchos de estos, pero aquí está la lista completa tal como aparece en el manual de Bash:

    • Un personaje de campana: \una
    • La fecha, en el formato "Fecha del mes de la semana" (por ejemplo, "Mar 26 de mayo"): \re
    • El formato se pasa a strftime (3) y el resultado se inserta en la cadena de solicitud; un formato vacío da como resultado una representación temporal específica del entorno local. Los tirantes son necesarios: \ D formato
    • Un personaje de escape: \mi
    • El nombre de host, hasta el primer '.': \ h
    • El nombre de host: \ H
    • El número de trabajos actualmente gestionados por el shell: \ j
    • El nombre base del nombre de dispositivo terminal del shell: \ l
    • Una nueva línea: \norte
    • Un retorno de carro: \ r
    • El nombre del shell, el nombre base de $ 0 (la parte que sigue a la barra final): \ s
    • La hora, en formato HH: MM: SS de 24 horas: \ t
    • La hora, en formato HH: MM: SS de 12 horas: \ T
    • La hora, en formato am / pm de 12 horas: \ @
    • La hora, en formato HH: MM de 24 horas: \UNA
    • El nombre de usuario del usuario actual: \ u
    • La versión de Bash (por ejemplo, 2.00): \ v
    • El lanzamiento de Bash, version + patchlevel (por ejemplo, 2.00.0): \ V
    • El directorio de trabajo actual, con $ HOME abreviado con una tilde (usa la variable $ PROMPT_DIRTRIM): \ w
    • El nombre base de $ PWD, con $ HOME abreviado con una tilde: \ W
    • El número de historial de este comando: \!
    • El número de comando de este comando: \ #
    • Si el uid efectivo es 0, #, de lo contrario $: PS
    • El carácter cuyo código ASCII es el valor octal nnn: \ nnn
    • Una barra invertida: \\
    • Comience una secuencia de caracteres no imprimibles. Esto podría usarse para incrustar una secuencia de control de terminal en el indicador: \ [
    • Termina una secuencia de caracteres no imprimibles: \]

    Por lo tanto, si desea agregar la fecha y la hora a su indicador de Bash y poner el directorio de trabajo en comando en una segunda línea, puede usar la siguiente construcción:

    PS1 = "[\ d \ t] \ u @ \ h \ n \ w \ $"

    Los corchetes aquí no son necesarios en absoluto, pero ayudan a dividir las cosas visualmente y hacen que la línea sea más fácil de leer. Como cubrimos anteriormente, puede agregar cualquier texto o caracteres normales a la variable que desee, así que no dude en usar lo que sea que más le convenga..

    Hay un truco más poderoso que debe conocer: puede agregar la salida de cualquier comando al indicador. Cuando aparezca el indicador, Bash ejecutará el comando y completará la información actual. Para hacer esto, solo incluye cualquier comando que quieras ejecutar entre dos ' caracteres. Eso no es un apóstrofe, ese es el acento grave, que aparece sobre la tecla Tabulador en su teclado..

    Por ejemplo, supongamos que desea ver la versión del kernel de Linux en el indicador. Podrías usar una línea como la siguiente:

    PS1 = "\ u @ \ h en 'uname -s -r' \ w \ $"

    Como otro ejemplo, supongamos que desea ver el tiempo de actividad y el promedio de carga del sistema, como lo muestra la tiempo de actividad mando. Podría usar la siguiente construcción, que pone el tiempo de actividad en su propia línea antes que el resto del indicador.

    PS1 = "('uptime') \ n \ u @ \ h: \ w $"

    Siéntase libre de experimentar con diferentes caracteres especiales y comandos para armar su línea de comandos ideal.

    Cómo agregar colores a su mensaje de Bash

    Una vez que hayas descubierto tu mensaje preferido, puedes agregarle colores. En realidad, esto es muy simple, pero hace que la variable se vea muy desordenada y complicada si no entiendes lo que estás viendo..

    Por ejemplo, la variable de solicitud de color por defecto de antes era:

    $ debian_chroot: + ($ debian_chroot) \ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $

    O, quitando los bits debian_chroot una vez más:

    \ [\ 033 [01; 32m \] \ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \] \ w \ [\ 033 [00m \] \ $

    Esto es en realidad sólo el \ u @ \ h: \ w $ Variable de antes, pero con información de color. Realmente, podemos dividirlo en algunas secciones:

    \ [\ 033 [01; 32m \]\ u @ \ h \ [\ 033 [00m \]: \ [\ 033 [01; 34m \]\ w \ [\ 033 [00m \]PS

    La primera sección es la \ u @ \ h bit, precedido por la información de color que la pone verde. El segundo es el : Carácter, precedido por información de color que elimina cualquier coloración. El tercero es el \ w bit, precedido por información de color que lo vuelve azul. El cuarto es el PS bit, precedido por información de color que elimina cualquier colorante.

    Una vez que entienda cómo construir sus propias etiquetas de color, puede agregar los colores que desee a las secciones de su Bash que desee..

    Esto es lo que necesita saber: debe incluir toda la información del código de color entre los \ [  y \] personajes. Dentro de la etiqueta, debes comenzar con \ 033 [ o \mi[ para indicar a Bash que esta es información de color. Ambos \ 033 [ y \mi[ hacer la misma cosa. \mi[ es más corto, por lo que podría ser más conveniente de usar, pero usaremos \ 033 [ Aquí, ya que coincide con lo que se utiliza de forma predeterminada. Al final de la etiqueta, debes terminar con metro\ para indicar el final de una etiqueta de color.

    Analizando eso, aquí está cómo se verá cada etiqueta de color. La única diferencia es la información que agrega en lugar de COLOR para definir el color real:

    \ [\ 033 [COLORmetro\]

    Bash le permite cambiar el color del texto de primer plano, agregar atributos como "negrita" o "subrayado" al texto, y establecer un color de fondo.

    Aquí están los valores para el texto de primer plano:

    • Negro: 30
    • Azul: 34
    • Cian: 36
    • Verde: 32
    • Morado: 35
    • Rojo: 31
    • Blanco: 37
    • Amarillo: 33

    Por ejemplo, como el texto púrpura es el código de color 32, utilizarías \ [\ 033 [32metro\]  para texto morado.

    También puede especificar un atributo para el texto. Este atributo debe agregarse antes del número de color, separado por un punto y coma (;). El texto con estos atributos se verá diferente en diferentes emuladores de terminal.

    Aquí están los valores para los atributos de texto:

    • Texto normal: 0
    • Texto en negrita o claro: 1 (depende del emulador de terminal).
    • Texto oscuro: 2
    • Texto subrayado: 4
    • Texto parpadeante: 5 (esto no funciona en la mayoría de los emuladores de terminal).
    • Texto invertido: 7 (Esto invierte los colores de fondo y primer plano, por lo que verá texto negro sobre un fondo blanco si el texto actual es texto blanco sobre un fondo negro).
    • Texto oculto: 8

    En realidad no es necesario incluir el atributo de texto normal. Ese es el defecto, de todos modos.

    Por ejemplo, como el texto rojo es el código 31 y el texto en negrita es el código 1, utilizarías \ [\ 033 [1; 31metro\] para texto en negrita rojo.

    También puede especificar un color de fondo, pero no puede agregar un atributo a un color de fondo.

    Aquí están los valores para los colores de fondo:

    • Fondo negro: 40
    • Fondo azul: 44
    • Fondo cian: 46
    • Fondo verde: 42
    • Fondo morado: 45
    • Fondo rojo: 41
    • Fondo blanco: 47
    • Fondo amarillo: 43

    Por ejemplo, ya que un fondo azul es el código 44, \ [\ 033 [44metro\] especificaría un fondo azul.

    Puede especificar etiquetas de color de fondo y de primer plano. Por ejemplo, 42 representa un fondo verde y 31 representa texto rojo. Entonces, para hacer que el indicador predeterminado se convierta en texto rojo sobre un fondo verde, usarías:

    PS1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \ $ "

    Aquí solo especificamos un solo color de fondo y luego un solo color de texto de primer plano, que comienza al inicio de la solicitud y se aplica a todo el texto de la solicitud. Sin embargo, puede especificar tantas etiquetas de color como desee en la variable para colorear diferentes secciones de su solicitud como desee..

    Los colores de fondo y de texto de primer plano continúan pasando el indicador a menos que especifique que el código de color 00 borra la información de color. También puede usar esta etiqueta dentro de la variable para restablecer el formato a su valor predeterminado en algún lugar de su solicitud. Por ejemplo, la siguiente línea terminaría todo colorante antes de la PS personaje.

    PS1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \\ [\ 033 [00m \] \ $ "

    Cómo configurar su nuevo mensaje predeterminado

    Una vez que haya terminado de experimentar con los colores, debe tener un mensaje de Bash que le guste en la sesión actual. Pero probablemente querrá hacer que ese nuevo mensaje sea permanente para que se use automáticamente en todas sus sesiones de Bash.

    Para hacer esto, solo necesitas cambiar el contenido de la variable PS1 en el archivo .bashrc, que vimos anteriormente.

    Abra el archivo .bashrc en su editor de texto preferido, así:

    nano ~ / .bashrc

    Desplázate hacia abajo y localiza la sección PS1 =. Simplemente reemplace la variable predeterminada con su variable personalizada. Probablemente querrás dejar el $ debian_chroot: + ($ debian_chroot)  bits solo, sin embargo, no aparecerán a menos que estés en un entorno chroot, de todos modos.

    Introduzca su variable de color PS1 debajo de la si ["$ color_prompt" = yes]; entonces línea. Introduzca la variable sin colores debajo de la más línea.

    Guarde el archivo y cierre su editor de texto. Por ejemplo, para guardar el archivo en nano, presione Ctrl + O, presione Entrar y luego presione Ctrl + X para salir.

    La próxima vez que inicie un nuevo shell de Bash, por ejemplo, al iniciar sesión en el terminal o al abrir una nueva ventana de terminal, verá su indicador personalizado.