Cómo personalizar (y colorear) su aviso de Bash
La mayoría de las distribuciones de Linux configuran el indicador de Bash para que se vea comousername@hostname:directory$
. Pero puede configurar el indicador de Bash para que contenga lo que quiera, e incluso puede elegir el color 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 aviso y la configuración predeterminados de Bash en el archivo.bashrc pueden ser un poco diferentes.
Ubicación de almacenamiento variable rápida
Su configuración de solicitud de Bash se almacena en el archivo.bashrc de su cuenta de usuario, ubicado en~/.bashrc
. Entonces, si su nombre de usuario es bob, el archivo se encuentra en/home/bob/.bashrc
.
Puede abrir este archivo para ver las variables de Bash actuales. Usaremos nano como editor de texto de ejemplo, pero también puede usar vi, emacs o cualquier otro editor de texto con el que esté familiarizado. Abra una terminal y ejecute:
nano ~/.bashrc
desplácese hacia abajo hasta elPS1=
parte. La primera variable parece bastante complicada ya que contiene 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 al poco${debian_chroot:+($debian_chroot)}
. Estos solo le dicen a Bash que le avise si está usando un entorno chroot de Debian y, por lo general, no lo muestran. Ignorándolos, aquí está la estructura predeterminada de las variables de solicitud de Bash:
tu @h:w$
u
para su nombre de usuario,@
significa el símbolo @,h
Indica el nombre de host (nombre de la computadora),:
Representa: carácter,w
Indica el directorio de trabajo, $
Esto significa $ si tiene una cuenta de usuario normal, o # si es el usuario raíz. Entonces, poniendo todo esto junto, obtienesusername@hostname:working_directory$
.
Para cambiar el indicador de Bash, solo necesita agregar, eliminar o reorganizar caracteres especiales en la variable PS1. Pero puede usar muchas más variables que las predeterminadas.
Ahora deje el editor de texto; en nano, presione Ctrl+X para salir. Le mostraremos cómo experimentar con variables antes de escribirlas en su archivo.bashrc.
Cómo crear un indicador de Bash personalizado
Su configuración de 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:
predeterminado=$PS1
Ahora puede experimentar configurando la variable PS1 en diferentes valores. Por ejemplo, la primera línea aquí establecerá su solicitud en la solicitud básica «usuario$», mientras que la segunda línea establecerá su solicitud en la solicitud básica «usuario:directorio_de_trabajo$».
PS1="u$" PS1="u:w$"
Si desea volver al indicador predeterminado, simplemente ejecute el siguiente comando.
PS1=$predeterminado
Dado que guardó estos valores predeterminados anteriormente, Bash volverá al indicador predeterminado. 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 la sesión y volver a iniciarla o cerrar y volver a abrir la ventana del terminal para volver al mensaje predeterminado. Pero la línea de arriba hace que sea más fácil volver al indicador predeterminado de Bash sin la molestia de cerrar sesión o cerrar ventanas.
Puede agregar cualquier carácter o texto a una variable. Entonces, para anteponer «Hello World» al mensaje predeterminado, usaría:
PS1="Hola mundou@h:w$"
Ahora que conoce los conceptos básicos, solo necesita saber cuáles son todos los caracteres especiales. Probablemente no le importen muchos de estos, pero aquí están los manual de bash:
- Palabra de campana:
a
- Fecha, en formato «Día de la semana Mes Fecha» (por ejemplo, «Martes 26 de mayo»):
d
- Pase el formato a strftime(3) e inserte el resultado en la cadena de solicitud;Un formato vacío da como resultado una representación de tiempo específica de la localidad. Se requieren llaves:
D{format}
- Personaje de escape:
e
- Nombre de host hasta el primer «.»:
h
- Nombre de la CPU:
H
- Número de trabajos gestionados actualmente por el shell:
j
- Nombre base para el nombre del dispositivo terminal de shell:
l
- nueva línea:
n
- Ingresar:
r
- El nombre del shell, el nombre base de $0 (la parte después de la última barra inclinada):
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
- Nombre de usuario del usuario actual:
u
- Versión de Bash (por ejemplo, 2.00):
v
- Lanzamientos de Bash, versión + nivel de parche (por ejemplo, 2.00.0):
V
- El directorio de trabajo actual, $HOME abreviado con una tilde (usando la variable $PROMPT_DIRTRIM):
w
- El nombre base de $PWD, $HOME se abrevia con una tilde:
W
- Número de historial para este comando:
!
- El número de comando para este comando:
#
- # si el uid efectivo es 0, de lo contrario $:
$
- Carácter cuyo código ASCII es valor octal nnn:
nnn
- barra invertida:
- Comienza una secuencia de caracteres no imprimibles. Esto se puede usar para incrustar secuencias de control de terminal en el aviso:
[
- Terminar una secuencia de caracteres no imprimibles:
]
Entonces, si desea agregar la fecha y la hora a su indicador de Bash y colocar el directorio de trabajo en la segunda línea del comando, puede usar la siguiente construcción:
PS1="[dt] u@hnw$"
Los corchetes aquí no son necesarios en absoluto, pero ayudan a dividir el contenido 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 siéntase libre de usar lo que funcione para usted.
También debe conocer un truco más poderoso: puede agregar la salida de cualquier comando al indicador. Siempre que se le solicite, Bash ejecutará el comando y completará la información actual. Para hacer esto, simplemente agregue los dos`
caracteres para contener cualquier comando para ejecutar. Eso no es un apóstrofe, es el acento grave, que aparece sobre la tecla Tab en su teclado.
Por ejemplo, suponga que desea ver la versión del kernel de Linux en el aviso. Puedes usar una línea como esta:
PS1="u@h en `uname -s -r` w$ "
Como otro ejemplo, suponga que desea ver el tiempo de actividad y el promedio de carga de su sistema, comouptime
como se muestra en el comando. Puede usar la siguiente estructura para colocar el tiempo de actividad en una línea separada antes del resto del aviso.
PS1="(`tiempo de actividad`)nu@h:w$"
Siéntase libre de experimentar con diferentes caracteres especiales y comandos para armar su símbolo del sistema ideal.
Cómo agregar color al aviso de Bash
Una vez que haya identificado su señal preferida, agréguele color. En realidad, esto es bastante simple, pero puede hacer que las variables parezcan muy confusas y complicadas si no comprende lo que está viendo.
Por ejemplo, la variable de sugerencia de color predeterminada anterior era:
${debian_chroot:+($debian_chroot)}[33[01;32m]u@h[33[00m]:[33[01;34m]w[33[00m]$
Alternativamente, elimine el bit debian_chroot nuevamente:
[33[01;32m]u@h[33[00m]:[33[01;34m]w[33[00m]$
en realidad es solou@h:w$
La variable anterior, pero con información de color. Realmente, podemos dividirlo en varias partes:
[33[01;32m] tu @h [33[00m] : [33[01;34m] w [33[00m] ps
la primera parte esu@h
bits, precedidos por información de color para convertirlo en verde.el segundo es:
carácter, precedido por información de color que elimina cualquier coloración.el tercero esw
bits, precedidos por información de color para volverlo azul.el cuarto es$
bit, precedido por información de color para eliminar cualquier coloración.
Una vez que comprenda cómo crear sus propias etiquetas de color, puede agregar cualquier color que desee a cualquier parte de su indicador de Bash favorito.
Esto es lo que necesita saber: Debe estar en el[
y ] character
s contiene la información completa del código de color. 33[
Dentro de la etiqueta, debe terminar con ocomienzo,e[
para indicarle a Bash que se trata de información de color.ambas cosas33[
Hacere[
La misma cosa.e[
es más corto, por lo que puede ser más conveniente de usar, pero lo haremos33[
Se usa aquí porque coincide con lo que se usa de forma predeterminada. Al final de la etiqueta, debe terminar conm
Marca el final con el color indicado.
Desglosándolo, así es como se ve cada etiqueta de color. La única diferencia es la información que agrega en lugar de COLOR para definir el color real:
[33[ color Metro]
Bash le permite cambiar el color del texto de primer plano, agregar atributos como «negrita» o «subrayado» al texto y establecer el color de fondo.
Estos son los valores para el texto de primer plano:
- Negro: 30
- Azul: 34
- cian: 36
- Verde: 32
- Púrpura: 35
- rojo: 31
- Blanco: 37
- Amarillo: 33
Por ejemplo, dado que el texto morado es el código de color 35, usaríatexto morado.[33[ 35 m]
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 para el atributo de texto:
- Texto normal: 0
- Texto en negrita o claro: 1 (depende del emulador de terminal).
- Texto tenue: 2
- Texto subrayado: 4
- Texto parpadeante: 5 (esto no funciona en la mayoría de los emuladores de terminal).
- Invertir texto: 7 (Esto invierte los colores de primer plano y de fondo, por lo que si el texto actual es blanco sobre negro, verá negro sobre blanco).
- Texto oculto: 8
En realidad, no necesita incluir atributos de texto normales. De todos modos, este 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íatexto rojo en negrita.[33[ 1;31 m]
También puede especificar un color de fondo, pero no puede agregar atributos al color de fondo.
Aquí están los valores para el color 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 el fondo azul es el código 44,Entonces se especificará un fondo azul.[33[ 44 m]
Puede especificar etiquetas de color de primer plano y de fondo. Por ejemplo, 42 para un fondo verde y 31 para texto rojo. Entonces, para que el indicador predeterminado sea texto rojo sobre un fondo verde, puede usar:
PS1="[33[ 42 m][33[ 31 m]u@h:w$"
Solo estamos especificando un color de fondo aquí, y luego un color de texto de primer plano que comienza al principio del mensaje y se aplica a todo el texto en el mensaje. Sin embargo, puede especificar cualquier cantidad de etiquetas de color en la variable para colorear diferentes partes de la indicación según lo desee.
Los colores del texto de fondo y de primer plano seguirán pasando por el indicador a menos que especifique el código de color 00 para borrar la información de color. También puede usar esta etiqueta en una variable para restablecer el formato predeterminado en algún lugar del indicador. Por ejemplo, la siguiente línea estaría en$
Todos los colores terminan antes que el personaje.
PS1="[33[ 42 m][33[ 31 m]u@h:w[33[ 00 m]$"
Cómo configurar un nuevo indicador predeterminado
Una vez que haya terminado de experimentar con los colores, debería tener un aviso de Bash que le guste en su sesión actual. Pero es posible que desee que este nuevo indicador sea permanente para que se use automáticamente en todas sus sesiones de Bash.
Para hacer esto, solo necesita cambiar el contenido de la variable PS1 en su archivo.bashrc, que hemos visto antes.
Abra el archivo.bashrc en su editor de texto favorito de la siguiente manera:
nano ~/.bashrc
Desplácese hacia abajo y busque la sección PS1=. Simplemente reemplace las variables predeterminadas con las personalizadas. Sin embargo, es posible que desee ignorar estos${debian_chroot:+($debian_chroot)}
bits: de todos modos, no aparecen a menos que esté en un entorno chroot.
Ingrese la variable PS1 coloreada debajo de la líneaif [ "$color_prompt" = yes ]; then
. Introduzca la variable sin color debajo de la líneaelse
.
Guarde el archivo y cierre el editor de texto. Por ejemplo, para guardar un archivo en nano, presione Ctrl+O, ingrese y luego presione Ctrl+X para salir.
La próxima vez que inicie un nuevo shell Bash (por ejemplo, iniciando sesión en una terminal o abriendo una nueva ventana de terminal), verá su mensaje personalizado.