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 debería ser el mismo en otras distribuciones de Linux, aunque el indicador y la configuración de Bash predeterminados en el archivo .bashrc pueden ser un poco diferentes.
Dónde se almacena la variable de solicitud
La configuración del indicador 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 Bash actual. Usaremos nano como nuestro editor de texto de ejemplo, aunque también podría usar nosotros , emacs o cualquier otro editor de texto con el que se sienta cómodo. Abra una Terminal y ejecute:
nano ~ / .bashrc
Desplácese hacia abajo hasta
Ψ1 =
sección. La primera variable parece bastante complicada porque incluye información de color; 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)}
bits. Estos solo le dicen a Bash que le avise si está usando un entorno chroot de Debian y normalmente no se mostrará. Ignorando esos, aquí está la estructura predeterminada de la variable de solicitud de Bash:
\ u @ \ h: \ w \ $
\ u
indica su nombre de usuario,
@
indica el signo @,
\ h
indica el nombre de host (nombre de la computadora),
:
indica el: carácter,
\en
indica el directorio de trabajo, y
\$
indica un $ si es una cuenta de usuario normal o # si es root. Entonces, poniendo todo eso junto, 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 puede 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 indicador de Bash personalizado
La configuración del indicador de Bash se almacena en la variable PS1. Para guardar el contenido de la variable PS1 en una nueva variable, ejecute el siguiente comando:
PREDETERMINADO = $ PS1
Ahora puede configurar la variable PS1 en diferentes valores para experimentar. Por ejemplo, la primera línea aquí establecería su mensaje en un mensaje básico de "usuario $", mientras que la segunda establecería su mensaje en un mensaje básico de "usuario: directorio_trabajo $".
PS1 = "\ u \ $" PS1 = "\ u: \ w \ $"
Si alguna vez desea volver al 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 los cambios que realice aquí son solo temporales para la sesión actual de Bash, por lo que siempre puede cerrar sesión y volver a iniciar sesión o cerrar y volver a abrir la ventana de terminal para volver al indicador predeterminado. Pero la línea anterior hace posible volver fácilmente a su indicador de Bash predeterminado sin la molestia de cerrar sesión o cerrar una ventana.
Puede agregar cualquier carácter o texto a la variable. Entonces, para prefijar el mensaje predeterminado con "Hola mundo", puede usar:
PS1 = "Hola mundo \ u @ \ h: \ w \ $"
Ahora que tiene los conceptos básicos, solo necesita saber cuáles 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:
\a -
La fecha, en formato "Día de la semana Mes Fecha" (por ejemplo, "Martes 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 de tiempo específica de la configuración regional. Los tirantes son necesarios:
\ D{format} -
Un personaje de escape:
\es -
El nombre de host, hasta el primer ".":
\ h -
El nombre de host:
\ H -
La cantidad de trabajos actualmente administrados por el shell:
\ j -
El nombre base del nombre del 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 de 12 horas am / pm:
\@ -
La hora, en formato HH: MM de 24 horas:
\A -
El nombre de usuario del usuario actual:
\ u -
La versión de Bash (por ejemplo, 2.00):
ev -
El lanzamiento de Bash, versión + nivel de parche (por ejemplo, 2.00.0):
EV -
El directorio de trabajo actual, con $ HOME abreviado con una tilde (usa la variable $ PROMPT_DIRTRIM):
\en -
El nombre base de $ PWD, con $ HOME abreviado con una tilde:
\EN -
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 $:
\$ -
El carácter cuyo código ASCII es el valor octal nnn:
\ nnn -
Una barra invertida:
\\ -
Inicie una secuencia de caracteres que no se impriman. Esto podría usarse para incrustar una secuencia de control de terminal en el indicador:
\[ -
Finaliza una secuencia de caracteres que no se imprimen:
\]
Por lo tanto, si desea agregar la fecha y la hora a su indicador de Bash y poner el directorio de trabajo en el 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 carácter normal a la variable que desee, así que siéntase libre de usar lo que le funcione.
Hay un truco más poderoso que debe conocer: puede agregar la salida de cualquier comando al indicador. Siempre que aparezca el mensaje, Bash ejecutará el comando y completará la información actual. Para hacer esto, simplemente incluya cualquier comando que desee ejecutar entre dos
`
caracteres. Eso no es un apóstrofe, ese es el acento grave, que aparece encima de la tecla Tab del 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, digamos que desea ver el tiempo de actividad del sistema y el promedio de carga, como lo muestra el
tiempo de actividad
mando. Puede usar la siguiente construcción, que coloca el tiempo de actividad en su propia línea antes que el resto del mensaje.
PS1 = "(ʻuptime`) \ n \ u @ \ h: \ w $"
Siéntase libre de experimentar con diferentes caracteres especiales y comandos para ensamblar su símbolo del sistema ideal.
Cómo agregar colores a su indicador Bash
Una vez que haya descubierto su mensaje preferido, puede agregarle colores. En realidad, esto es muy simple, pero hace que la variable se vea terriblemente desordenada y complicada si no comprende lo que está mirando.
Por ejemplo, la variable de solicitud de color predeterminada de antes era:
$ {debian_chroot:+($debian_chroot)} \ [\033[01;32m\] \ u @ \ h \ [\033[00m\]: \ [\033[01;34m\] \ w \ [\033[00m\] \ $
O, eliminando los bits debian_chroot una vez más:
\ [\033[01;32m\] \ u @ \ h \ [\033[00m\]: \ [\033[01;34m\] \ w \ [\033[00m\] \ $
En realidad, esto es solo 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\]\en\[\033[00m\]\$
La primera sección es la
\ u @ \ h
bit, precedido por información de color que lo vuelve verde. El segundo es el
:
carácter, precedido por información de color que elimina cualquier color. El tercero es el
\en
bit, precedido por información de color que lo vuelve azul. El cuarto es el
\$
bit, precedido por información de color que elimina cualquier color.
Una vez que comprenda cómo construir sus propias etiquetas de color, puede agregar los colores que desee a las secciones de su mensaje Bash que desee.
Esto es lo que necesita saber: debe incluir toda la información del código de color entre
\[
y
\] personaje
s. Dentro de la etiqueta, debe comenzar con
\033[
o
\es[
para indicarle a Bash que se trata de información de color. Ambos
\033[
y
\es[
hacer la misma cosa.
\es[
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 usa de forma predeterminada. Al final de la etiqueta, debe terminar con
metro\
para indicar el final de una etiqueta de color.
Desglosando eso, así es como se verán todas las etiquetas 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.
Estos son los valores para el texto en primer plano:
- Negro: 30
- Azul: 34
- Cian: 36
- Verde: 32
- Morado: 35
- Red: 31
- Blanco: 37
- Amarillo: 33
Por ejemplo, dado que el texto violeta tiene el código de color 32, usaría
\[\033[
32
metro\]
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.
Estos son los valores de los atributos de texto:
- Texto normal: 0
- Texto en negrita o claro: 1 (depende del emulador de terminal).
- Texto atenuado: 2
- Texto subrayado: 4
- Texto intermitente: 5 (esto no funciona en la mayoría de los emuladores de terminal).
- Texto invertido: 7 (esto invierte los colores de primer plano y de fondo, por lo que verá texto negro sobre fondo blanco si el texto actual es texto blanco sobre fondo negro).
- Texto oculto: 8
En realidad, no es necesario que incluya el atributo de texto normal. De todos modos, ese es el valor predeterminado.
Por ejemplo, dado que el texto rojo es el código 31 y el texto en negrita es el código 1, usaría
\[\033[
1;31
metro\]
para texto rojo en negrita.
También puede especificar un color de fondo, pero no puede agregar un atributo a un color de fondo.
Estos son los valores de 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, dado que un fondo azul es el código 44,
\[\033[
44
metro\]
especificaría un fondo azul.
Puede especificar etiquetas de color de primer plano y de fondo. Por ejemplo, 42 representa un fondo verde y 31 representa un texto rojo. Entonces, para que el mensaje predeterminado se convierta en texto rojo sobre un fondo verde, debe usar:
Ψ1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \ $ "
Solo especificamos un solo color de fondo y luego un solo color de texto de primer plano aquí, que comienza al principio del mensaje y se aplica a todo el texto en el mensaje. Sin embargo, puede especificar tantas etiquetas de color como desee en la variable para colorear diferentes secciones de su mensaje como desee.
Los colores del texto de fondo y primer plano siguen pasando de la indicación a menos que especifique el código de color 00 para borrar la información de color. También puede usar esta etiqueta dentro de la variable para restablecer el formato a los valores predeterminados en algún lugar de su mensaje. Por ejemplo, la siguiente línea terminaría todos los colores antes del
\$
personaje.
Ψ1 = "\ [\ 033 [42m \] \ [\ 033 [31m \] \ u @ \ h: \ w \\ [\ 033 [00m \] \ $ "
Cómo configurar su nuevo aviso predeterminado
Una vez que haya terminado de experimentar con los colores, debería tener un mensaje de Bash que le guste en la sesión actual. Pero probablemente quieras que ese nuevo aviso sea permanente para que se use automáticamente en todas tus sesiones de Bash.
Para hacer esto, solo necesita 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ácese hacia abajo y localice la sección PS1 =. Simplemente reemplace la variable predeterminada con su variable personalizada. Probablemente querrás dejar el
${debian_chroot:+($debian_chroot)}
bits solos, sin embargo, no aparecerán a menos que esté en un entorno chroot, de todos modos.
Ingrese su variable PS1 de color debajo del
si [ "$color_prompt" = yes ]; luego
línea. Ingrese la variable sin colores debajo del
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 Bash, por ejemplo, al iniciar sesión en la terminal o al abrir una nueva ventana de terminal, verá su mensaje personalizado.