¿Qué es el indicador de shell?
Como usuarios de Linux/UNIX, pasamos mucho tiempo trabajando en el shell y, en muchos casos, la siguiente línea siempre está delante de nosotros:
bash- 2.04$
Si eres superusuario (root), tendrás acceso a la hermosa versión con ícono del mensaje de "identidad" a continuación:
bash-2.04#
Estas indicaciones no son bonitas. No es de extrañar que varias versiones de Linux hayan actualizado la línea de aviso predeterminada, agregando colores y más información. Pero incluso si tiene una nueva versión y agrega colores bonitos a las líneas de mensajes, no será perfecto. Es posible que desee agregar o cambiar algunos colores en la línea del mensaje, o agregar (o eliminar) alguna información. No es difícil diseñar desde cero tus propias líneas de mensajes coloridas y bellamente decoradas.
Conceptos básicos de la línea de solicitud
En bash, puede configurar la línea de solicitud cambiando el valor de la variable de entorno PS1, de la siguiente manera:
$ export PS1= "gt;"
gt;
Los cambios entrarán en vigor inmediatamente. Puede agregar la definición de "exportación" al archivo ~/.bashrc para que los cambios sean permanentes. PS1 puede contener tanto texto sin formato como sea posible:
$ export PS1="Este es mi súper mensaje gt;"
Este es mi súper mensaje gt;
Si bien esto es divertido, ¡tener mucho texto estático en la línea de aviso no es particularmente útil!
Si bien esto es divertido, tener mucho texto estático en la línea de solicitud no es particularmente útil. La mayoría de los mensajes personalizados contienen información como nombre de usuario, directorio de trabajo o nombre de host. Esta información te ayudará a navegar por el mundo shell. Por ejemplo, la siguiente línea muestra su nombre de usuario y nombre de host:
$ export PS1="\u@\H gt;"
drobbins@freebox gt;
Esta línea de aviso es especialmente útil para las personas que inician sesión en varias máquinas usando cuentas con diferentes nombres, ya que le recordará en qué máquina está ejecutando actualmente y qué permisos tiene.
En el ejemplo anterior, utilizamos secuencias de caracteres especiales con barras invertidas para indicarle a bash que inserte el nombre de usuario y el nombre de host en la línea de solicitud. Cuando estas secuencias de caracteres con escape aparecen en la variable PS1, bash las reemplazará con secuencias específicas. valores. Usamos la secuencia "\u" (para el nombre de usuario) y "\H" (para la primera mitad del nombre de host). Aquí hay una lista completa de todas las secuencias especiales que bash puede reconocer (puede encontrar la lista en la sección "PROMPTING" de la página de manual de bash):
Descripción de secuencia
( a) Carácter de campana de eco ASCII (también puede escribir \007)
(d) Fecha en el formato "Miércoles 06 de septiembre"
(e) Carácter de escape ASCII (también puede escriba \033 )
(h) La primera parte del nombre del host (por ejemplo, "el nombre completo del host (por ejemplo, "mibox.midominio.com"))
j Presione ^Z en este shell El número de procesos en los que se cuelga la clave
(l El nombre del dispositivo terminal que utiliza este shell (por ejemplo, "mybox.com").
\El nombre del dispositivo terminal utilizado por este shell (por ejemplo, "ttyp4")
n Carácter de nueva línea
r Carácter de retorno de carro
s El nombre del shell (por ejemplo, "ttyp4") "bash")
t horario de 24 horas (por ejemplo, "horario de 12 horas (por ejemplo, "11:01:01") p>
@ horario de 12 horas (incluido AM/PM)
u nombre de usuario
\v versión de bash (por ejemplo, 2.04)
\v ¿Versión de Bash (incluido el nivel de parche)? /tdgt;
\w El directorio de trabajo actual (como "/home/drobbins")
\W El "nombre base" del actual directorio de trabajo (como "drobbins")
\! Posición en el búfer del historial
# Número de comando (se acumula en cada mensaje siempre que lo ingrese)
$ Si no es root, inserte un "$", si es un superusuario, muestre un "#"
xxx Inserte un número xxx de tres dígitos (reemplace los números no utilizados con ceros, como "\00") . Esta secuencia debe aparecer antes de una secuencia de caracteres que no mueve el cursor (como una secuencia de escape de color
\[] Esta secuencia debe aparecer después de una secuencia de). caracteres que no se imprimen
Ahora que conoces todas las secuencias especiales que utilizan el escape de barra invertida en bash, échales un vistazo para ver cómo funcionan. Aquí te explicamos cómo. p>Agregar color
Agregar color es muy simple; el primer paso es diseñar la línea del mensaje sin color. Luego, todo lo que tenemos que hacer es agregar el terminal (no bash) que reconozca secuencias de escape especiales. que permiten que la terminal muestre ciertas partes del texto en color. La terminal Linux estándar y la terminal X le permiten configurar el color de primer plano (texto) y de fondo, y habilitar caracteres en "negrita" si lo desea.
La forma de seleccionar un color es agregar una secuencia dedicada en PS1, básicamente intercalada entre "\e[" (corchete abierto con escape) y "m" si hay varios códigos numéricos. especificado, sepárelos con punto y coma. Aquí hay un ejemplo de un código de color:
"\e[0m"
Si se especifica, un código numérico de cero le indica al terminal que restablezca el. configuración de primer plano, fondo y negrita a sus valores predeterminados. Puede usar este código al final de la línea de solicitud para que el texto que ingrese no tenga color. Ahora, veamos estos códigos de color. >
Tabla de colores
Para usar esta tabla, primero busque el color que desea usar, luego el número de primer plano correspondiente (30-37) y el número de fondo (40-47). Por ejemplo, si le gusta el texto verde sobre un fondo negro, establezca los números en 32 y 40, luego abra la definición de línea de solicitud y agregue los códigos de color apropiados. La siguiente definición:
exportar PS1="\wgt;"
se convierte en:
exportar PS1="\e[32;40m\wgt;"
Aunque la línea de aviso es bastante buena hasta ahora, todavía no es perfecta. Después de que bash muestre el directorio de trabajo, necesitamos usar la secuencia "\e[0m" para restablecer los colores a los valores normales.
export PS1="\e[32;40m\wgt;\e[0m"
Esta definición mostrará una bonita línea verde, pero todavía tenemos que escanear un poco . No necesitamos establecer el color de fondo en "40" porque establece el fondo en negro, que es el color predeterminado.
Además, el verde todavía es muy oscuro; podemos solucionar este problema agregando el código de color "1", lo que hará que el texto en negrita sea más claro. Además, debemos rodear todos los caracteres que no se imprimen con las secuencias especiales de escape de bash "\[" y "\]". Estas secuencias de escape le dicen a bash que los caracteres encerrados no ocupan ningún espacio en la línea, por lo que el ajuste de palabras puede continuar funcionando normalmente. Sin estas dos secuencias de escape, incluso si tiene una línea de aviso muy bonita, si el comando que ingresa llega al extremo derecho de la terminal, la pantalla será un desastre. Aquí está nuestra última línea de mensaje:
exportar PS1="\[\e[32;1m\]\wgt; \[\e[0m\]"
No preocupación Utilice varios colores en la misma línea de mensaje, como este:
export PS1="\[\e[36;1m\]\u@\[\e[32;1m\]\Hgt ; \[\e[0m\]"
Diversión en Xterm
Ya he explicado cómo agregar información y color a la línea del mensaje, pero puedes ir un paso más allá. Puede hacer que la barra de título de una terminal X (como rxvt o aterm) se actualice dinámicamente agregando código especializado a la línea de solicitud. Simplemente agregue la siguiente secuencia a la línea del mensaje de PS1:
"\e]2;titlebar/a"
Simplemente reemplace la subcadena "titlebar" con el xterm del texto en el barra de título y ¡listo! No es necesario utilizar texto estático; puede insertar secuencias de escape de bash en la barra de título. Considere el siguiente ejemplo, que muestra el nombre de usuario, el nombre de host y el directorio de trabajo actual en la barra de título y define una línea corta de color verde brillante:
export PS1="\[\e] 2;\u @\H \w\a\e[32;1m\]gt;\[\e[0m\]"
Este es el mensaje que utilicé en el resultado de la captura de pantalla anterior ¡OK! La línea de aviso a utilizar. Me gusta esta línea de aviso porque muestra el mensaje completo en la barra de título, en lugar de en el terminal, que tiene un límite en la cantidad de caracteres que se pueden mostrar en una línea. Por cierto, asegúrese de rodear la secuencia de la barra de título con "\[ " y "\]" (porque en lo que respecta al terminal, esta secuencia no es imprimible). El problema de poner mucha información en la barra de título es que no será visible si estás usando un terminal no gráfico (como la consola del sistema). Para resolver este problema, puedes hacer esto en .bashrc:
if [ "$TERM" = "linux" ]
entonces
#estamos en la consola del sistema o tal vez haciendo telnet en
exportar PS1="\[\e[32;1m\]\u@\H gt; \[\e[0m\]"
de lo contrario
#no estamos en la consola, asume una exportación xterm
PS1="\[\e]2;\u@\H \w\a\ e[32 ; 1m\]gt;\[\e[0m\]"
fi
Esta declaración condicional de bash establecerá dinámicamente la línea de solicitud según la configuración actual del terminal. Para mantener la coherencia, debe configurar su ~/.bash_profile para que busque (fuente) su ~/.bashrc al inicio. Asegúrese de tener esta línea en su archivo ~/.bash_profile:
source ~/.bashrc
De esta manera, ya sea que inicie un shell de inicio de sesión o un shell sin inicio de sesión, obtendrá la misma línea de aviso.
Bien, ya dominas la magia de las líneas rápidas.
Ahora, siéntete libre de crear hermosas líneas coloridas
Autor:
Daniel Robbins
Presidente y CEO, Gentoo Technologies
== ===========================
Pedir notas de PS1
bash tiene dos niveles de mensajes de usuario. El primer nivel es el mensaje que aparece a menudo cuando bash está esperando que se ingrese un comando
. El mensaje predeterminado de primer nivel es el carácter $ (o # si es superusuario).
Puedes cambiar el mensaje predeterminado cambiando el valor de la variable PS1 de bash, por ejemplo:
PS1="Ingresa el comando"
Cambiar el comando shell's El mensaje cambia a la cadena especificada.
Muestra un mensaje secundario cuando bash necesita más información para completar un comando. El mensaje de segundo nivel predeterminado es gt;. Si desea cambiar el mensaje de segundo nivel, puede establecer el valor de la variable PS2:
PS2="Necesito más información"
Además, también puede usar mensajes especiales caracteres para definir el mensaje, a continuación se enumeran los caracteres especiales
más utilizados.
Solicitud de código de carácter especial
Significado del carácter
! Muestra el número del historial del comando.
\# Muestra el número de comando del comando actual.
\$ muestra el carácter $ como símbolo, o el símbolo # si el usuario es root.
\\\\ Muestra barras invertidas.
\d Muestra la fecha actual.
\h Muestra el nombre del host.
\n Imprimir nueva línea.
\nnn muestra el valor octal de nnn.
\s Muestra el nombre del shell que se está ejecutando actualmente.