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 hostW
: 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 hostW
: 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 actualW
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 FQDNd
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: SST
La hora actual en formato de 12 horas HH: MM: SS@
La hora actual en formato de 12 horas AM / PMn
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 atrevidotput rev
– Mostrar colores inversostput sgr0
– Restablecer todotput 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.