LINUX

Cómo cambiar el indicador de Bash Shell colorido en Linux

La mayoría de nosotros trabajamos con un indicador de shell. De forma predeterminada, la mayoría de las distribuciones de Linux muestran el nombre de host y el directorio de trabajo actual. Pero es posible que solo unos pocos sepan cómo personalizar el indicador de Bash. Le emocionará saber que puede cambiar el color de la línea de comandos para impresionar a sus amigos o hacer su propia vida bastante fácil agregando información importante a la línea de comandos mientras trabaja.

En este artículo, explicaré cómo cambiar el color o personalizar su Bash Prompt de formas sencillas.

Entendiendo BASH

El shell bash es el predeterminado en cualquier distribución de Linux. Prompt se controla a través de una variable de shell especial llamada PS1. También hay otras variables, como PS2, PS3 y PS4. Bash muestra el indicador principal PS1 cuando está listo para leer un comando. Y muestra el indicador secundario PS2 cuando necesita más información para completar un comando.

En resumen, bash permite que estas cadenas de mensajes se personalicen insertando una serie de caracteres especiales de escape con barra invertida.

Mostrar indicador de Bash actual

Puede ver el estado actual de Bash Prompt ejecutando este comando a continuación:

# echo $PS1
[u@h W]$

De forma predeterminada, el símbolo del sistema está configurado en [u@h W]PS Cada carácter especial de escape con barra invertida se puede decodificar de la siguiente manera:

  • u : Muestra el nombre de usuario actual.
  • h : Muestra el nombre de host
  • W : Imprime la base del directorio de trabajo actual.
  • $ : Mostrar # (indica el usuario root) si el UID efectivo es 0; de lo contrario, muestre un $.

Para un usuario de Unix que no sea root, se mostrará como se muestra a continuación:

[linodadmin@centos-01 ~]$

Modificar el indicador de Bash

Como se discutió anteriormente, el indicador de bash está controlado por una variable llamada PS1, y podemos ajustar esta variable en su archivo .bashrc para personalizar su indicador.

Además, si desea que estos cambios estén disponibles para todos los usuarios del sistema en el sistema o globalmente, todo lo que necesita hacer es modificar esta variable en el archivo /etc/bash.bashrc (en sistemas Debian y Ubuntu) o / etc / bashrc (en otras distribuciones de Linux) en lugar de ~ / .bashrc.

Bash le permite utilizar algunos atajos para recuperar detalles, como el nombre de usuario, el nombre del host, el directorio de trabajo actual, fecha y hora, etc. Estos atajos se denominan secuencias de escape.

Tome un ejemplo, desea mostrar el nombre del usuario, el nombre de host, el directorio actual y la hora en formato de 12 horas seguido de $. Luego, se puede recuperar modificando la variable PS1 con estas secuencias de escape que muestran la información requerida como se muestra a continuación:

  • u : Muestra el nombre de usuario actual.
  • h : Muestra el nombre de host
  • W : Imprime la base del directorio de trabajo actual.
  • @ : Muestra la hora actual en formato de 12 horas am / pm
$ export PS1="[\u@\h \W \@]\$"
[linodadmin@centos-01 ~ 01:50 PM]$

Esto permitirá solo un cambio temporal en su indicador de Bash. Si necesita realizar un cambio permanente en los terminales siguientes, puede editar el archivo ~ .bashrc con este valor de PS1 (PS1 = «[\u@\h \W \@]\ $ «) hacia el final del archivo.

Consulte algunas de las listas de secuencias de escape que nos ayudarán a recuperar la información requerida.

  • u Nombre de usuario del usuario actual,
  • w El directorio de trabajo actual
  • W El último fragmento del directorio de trabajo actual. Por ejemplo, si se encuentra actualmente en / home / linodadmin / var, esto le dará var.
  • h El nombre de la computadora, hasta un punto (.). Por ejemplo, si su computadora se llama centos-01.linoxide.com, esto le da centos-01.
  • H Nombre de host FQDN
  • d La fecha en formato «Día de la semana Mes Fecha» (por ejemplo, «Martes 21 de marzo»)
  • t La hora actual en formato de 24 horas HH: MM: SS
  • T La hora actual en formato de 12 horas HH: MM: SS
  • @ La hora actual en formato de 12 horas AM / PM
  • n Pasa a la siguiente línea.
  • ! : el número de historial de este comando
  • # : el número de comando de este comando
  • $ : si el UID efectivo es 0, un #, de lo contrario un $
  • j : el número de trabajos gestionados actualmente por el shell

Agregar colores al mensaje

En su mayoría, a los administradores del sistema les gustaría agregar algo de color a su aburrido indicador de shell. Esto se puede lograr con la ayuda de secuencias de escape ANSI en la variable PS1. Estas secuencias de escape deben incluirse entre [ and ] para que funcione correctamente. De una manera simple, podemos usar esta sintaxis de comando para agregar colores a la línea de comandos.

'mi[x;ym $PS1 e[m'

Where:

  • e[ : Start color scheme.
  • x;y : Color pair to use (x;y)
  • $PS1 : Your shell prompt variable.
  • e[m : Stop color scheme.

Check out the list of color codes which can be used:

txtblk='e[0;30m' # Black - Regular
txtred='e[0;31m' # Red
txtgrn='e[0;32m' # Green
txtylw='e[0;33m' # 
txtblu='e[0;34m' # Blue
txtpur="e[0;35m" # Purple
txtcyn='e[0;36m' # Cyan
txtwht="e[0;37m" # White
bldblk='e[1;30m' # Black - Bold
bldred='e[1;31m' # Red
bldgrn='e[1;32m' # Green
bldylw='e[1;33m' # 
bldblu='e[1;34m' # Blue
bldpur="e[1;35m" # Purple
bldcyn='e[1;36m' # Cyan
bldwht="e[1;37m" # White
unkblk='e[4;30m' # Black - Underline
undred='e[4;31m' # Red
undgrn='e[4;32m' # Green
undylw='e[4;33m' # 
undblu='e[4;34m' # Blue
undpur="e[4;35m" # Purple
undcyn='e[4;36m' # Cyan
undwht="e[4;37m" # White
bakblk='e[40m' # Black - Background
bakred='e[41m' # Red
bakgrn='e[42m' # Green
bakylw='e[43m' # 
bakblu='e[44m' # Blue
bakpur="e[45m" # Purple
bakcyn='e[46m' # Cyan
bakwht="e[47m" # White
txtrst="e[0m" # Text Reset

Let’s see the examples using these color codes.

Suppose, you want to use different colors in one terminal statement itself like you want to show the username in and the directory path in cyan, followed by a , bold $ symbol. You need to use escape sequences separately as required.  For example, the escape sequences for red is e[31m, for cyan, it is e[36m, and for , it is e[33m. For bold text, we need to use e[1m. In addition, we need the reset ANSI escape sequence, which prevents styles from affecting the rest of the text in the shell. The reset sequence is e[0m. The PS1 variable for this will look like this.

export PS1='[e[32mu] [e[36mw] [e[33m][e[1m]PS[e[0m]'

La declaración de exportación debe agregarse a su archivo $ HOME / .bashrc para cambios permanentes.

Usando el comando tput

Incluso podemos usar el comando tput para modificar la configuración del indicador. Por ejemplo, para mostrar el indicador de color usando un tput, podemos usar este comando a continuación:

export PS1="[$(tput setaf 3)]u@h:w $ [$(tput sgr0)]"

Lista de algunas de las opciones de la línea de comando tput a continuación:

  • tput bold – Efecto atrevido
  • tput rev – Mostrar colores inversos
  • tput sgr0 – Restablecer todo
  • tput setaf {CODE}– Establezca el color de primer plano, consulte la tabla de {CÓDIGO} de colores a continuación para obtener más información.
  • tput setab {CODE}– Establezca el color de fondo, consulte la tabla de {CÓDIGO} de colores a continuación para obtener más información.

Códigos de color para las opciones de línea de comandos de tput

Consulte los ejemplos que utilizan estos comandos tput a continuación:

Modificar la configuración de Prompt usando Bashish

Bashish es un entorno temático para terminales de texto. Puede cambiar los colores, la fuente, la transparencia y la imagen de fondo por aplicación. Además, admite cambios rápidos en shells comunes como bash, zsh y tcsh. Podemos instalar esta herramienta para nuestras distribuciones de Linux desde el descargar Enlace.

Lo instalé usando su extracto de alquitrán.

root@centos-01:/home/bashish-2.2.4 $ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
configure: creating ./config.status
config.status: creating data/main/prompt/sh/autoload
config.status: creating data/bashish-version
config.status: creating Makefile
config.status: creating bashish.spec
config.status: creating man/bashish.1
config.status: creating bin/bashish

Bashish configuration:

prefix: /usr/local

Now run 'make' and 'make install'
root@centos-01:/home/bashish-2.2.4 $ make
root@centos-01:/home/bashish-2.2.4 $ make install

Ahora tenemos que correr golpear para instalar archivos de configuración de usuario.

$bashish
This will enable Bashish prompt and terminal themeing

the following files will be modified:
~/.profile
~/.bashrc
~/.bash_profile (if already exists)
~/.zprofile (if already exists)
~/.zshrc
press ENTER to enable Bashish theming
or hit CTRL+C to quit

Bashish is now installed.

Restart your terminal or logoff and logon again to start theming your shell.

A continuación, debe reiniciar su shell escribiendo el siguiente comando:

$exec bash

┌────[root@centos-01]───────[15:58:35]───────[/home/bashish-2.2.4]─────────────────────────────────────────────────────────────────────────────
└──#

Puedes escribir el comando lista de bashish para ver todos los temas personalizados disponibles y bashish –ayuda para ver más opciones.

─# bashish list
amiga
amigados
appchat
appcompress
appeditor
appeditornofont
appeditor_reversed
appevilroot
appgeneric
apphearttracker
appinvertfgbg

Puede aplicar los cambios necesarios al símbolo del sistema escribiendo bashish THEMENAME, por ejemplo

$bashish moo

Esto modificará su símbolo del sistema como en la instantánea.

Del mismo modo, puede aplicar cualquiera de estos temas personalizados para modificar su símbolo del sistema o la configuración del terminal.

Agregar emoticonos en el mensaje

Además, le alegrará saber que incluso podemos hacer emoticonos para mostrar en nuestro mensaje para tener expresiones correspondientes a nuestros intentos de trabajo (éxito / fracaso) en el aviso. Por ejemplo, desea mostrar una carita feliz verde en nuestros intentos exitosos y una carita sonriente roja triste en nuestros intentos fallidos. Luego, podemos configurar un script lógico para tomar el valor booleano y mostrar los emoticonos correspondientes al valor de la variable devuelta.

export PS1='$(if [[ $? == 0 ]]; then echo "[e[32m]:)"; else echo "[e[31m]:("; fi)[e[0m] u w $ '

El $? La variable contiene el valor de retorno del programa anterior. Contiene un 0 si tuvo éxito y un valor distinto de cero si falló. El bloque $ (if … fi) contiene la lógica para mostrar los emoticonos.

Agregar los emojis en el mensaje

Puede modificar la misma cadena lógica con los caracteres Unicode para los emojis en lugar de emoticones para transmitir las emociones de manera más efectiva. Consulte la cadena modificada con la variante emoji de nuestro mensaje sonriente. 🙂 se representa como xf0 x9f x98 x83 y 🙁 se representa como xf0 x9f x99 x81.

export PS1='$(if [[ $? == 0 ]]; then printf "xf0x9fx98x83"; else printf "xf0x9fx99x81"; fi)[e[0m] u w $ '

Sin embargo, dependiendo del emulador de terminal y la fuente utilizada en nuestros sistemas, podemos ver emojis monocromáticos o incluso caracteres confusos.

Conclusión

Espero que hayas disfrutado leyendo estas buenas técnicas para colorear tu indicador de bash. La distinción visual por color es lo que podemos hacer en nuestro terminal para que nuestro trabajo sea más agradable y de seguimiento. Colorear cierta información puede hacer que se destaquen y puede ayudarlo a ubicar el último mensaje cuando se desplaza por el historial de la terminal. Incluso puede personalizar los patrones de color para distinguir a sus usuarios raíz de los demás.

Ahora es el momento de que lo utilice de forma eficaz para facilitar su trabajo. Me encantaría leer sus valiosos comentarios y sugerencias al respecto.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar