LINUX

Cómo personalizar la variable de shell PS1-PS4 en el indicador Bash

Puede ver la verdadera belleza de Linux cuando usa comandos de shell. De forma predeterminada, el indicador de shell muestra el nombre de host y el directorio de trabajo. Usando variables, puede cambiar el color del símbolo del sistema, la pantalla, la fecha y la hora, el nombre de usuario, etc. Incluso puede ejecutar scripts de shell dentro de la variable PS1, donde PS significa la declaración del símbolo del sistema. Voy a mostrar algunos ejemplos de cómo cambiar el entorno de Linux usando la variable PS1.

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

Presentación de las diferentes variables de shell

  • PS1: variable de entorno que contiene el valor de la solicitud predeterminada. Cambia la apariencia y el entorno del símbolo del sistema de la shell.
  • PS2: variable de entorno que contiene el valor que el indicador utilizó para la interpretación de continuación de un comando. Lo ve cuando escribe un comando largo en muchas líneas.
  • PS3: variable de entorno que contiene el valor de la solicitud del operador de selección dentro del script de shell.
  • PS4: variable de entorno que contiene el valor del indicador utilizado para mostrar líneas de script durante la ejecución de un script bash en modo de depuración.

Tenga en cuenta que en este artículo usaremos eco comando para ver el valor de los diferentes indicadores en nuestra consola.

1) Cambiar el indicador de bash PS1

PS1 es el mensaje predeterminado que vemos cada vez que iniciamos sesión en la consola. Para la mayoría de los sistemas Linux nuevos, los valores predeterminados tienen u @ h: w $ que muestran el nombre de usuario, nombre de host, el directorio de trabajo actual y el privilegio de usuario. Estos son solo ejemplos de diferentes valores que puede tomar. Hay algunos otros valores que veremos más adelante. Echemos un vistazo al valor predeterminado del indicador de PS1 en el terminal

# echo $PS1 
[e]0;u@h: wa]${debian_chroot:+($debian_chroot)}u@h:w$

Las partes que incluyen debian_chroot Indique que si está operando en un entorno de raíz de cambios, el mensaje se modificará para recordarle. Mire a continuación para tener una idea completa del resto del mensaje:
Opciones:
a El carácter de campana ASCII (también puede escribir 007)
d Fecha en formato «Sáb 04 de septiembre»
e Carácter de escape ASCII (también puede escribir 033)
h Primera parte del nombre de host (como «mybox»)
H Nombre de host completo (como «mybox.mydomain.com»)
j La cantidad de procesos que ha suspendido en este shell presionando ^ Z
l El nombre del dispositivo terminal del shell (como «ttyp4»)
n Nueva línea
r Retorno de carro
s El nombre del ejecutable de shell (como «bash»)
t Hora en formato de 24 horas (como «23:59:59»)
T Hora en formato de 12 horas (como «11:59:59»)
@ Hora en formato de 12 horas con am / pm
u Su nombre de usuario
v Versión de bash (como 2.04)
V Versión Bash, incluido el nivel de parche
w Directorio de trabajo actual (como «/ home / koithara»)
W El «nombre base» del directorio de trabajo actual (como «koithara»)
! Posición actual del comando en el búfer del historial
# Número de comando (esto contará en cada solicitud, siempre que escriba algo)
$ Si no es root, inserta un «$»; si eres root, obtienes un «#»
xxx Inserta un carácter ASCII basado en el número xxx de tres dígitos (reemplace los dígitos no utilizados con ceros, como » 007 ″)
\ Una barra invertida
[ This sequence should appear before a sequence of characters that don’t move the cursor (like color escape sequences). This allows bash to calculate word wrapping correctly.
] Esta secuencia debe aparecer después de una secuencia de caracteres que no se imprimen.

Haremos algunos ejemplos pero antes de manipular el valor de estas variables, necesitamos guardar el archivo que contiene todas. Será útil volver a nuestro mensaje original más fácilmente en caso de que cometamos un error o sin tener que cerrar la sesión y volver a iniciarla.

$ cp ~/.bashrc ~/.bashrc-backup

Ejemplo 1: Muestra solo el nombre de usuario y el nombre de host con el carácter de separación «-«:

user01@server01:~$ export PS1="u - h$ "
user01 - server01$ echo $PS1
u - h$

Podemos ver inmediatamente el cambio en nuestra consola. Tenga en cuenta que después del signo igual, usamos comillas dobles («») usar el u y h valores. Si usamos otra anotación, el shell considerará todo después del signo igual como valor y no tendremos el resultado al que asistimos.

Ejemplo 2: Simulamos un error al mostrar el nombre de usuario y el nombre de host porque usaremos ^ en vez de «

user01@server01:~$ export PS1=^u - h$ ^
^u - h$ ^$ echo $PS1 
^u - h$ ^

Ejemplo 3: Pasando cadena a la variable PS1

user01@sever01:~$ export PS1=happy-test$
happy-test$

Ejemplo 4: Agregue tiempo al mensaje con t y el directorio de trabajo con w

user01 - server01$ export PS1="[t] u@h:w$ "
[21:38:51] user01@server01:~$

Ejemplo 5: Divida el mensaje en varias líneas con norte para un comando largo

user01@server01:~$ export PS1="[t]nu@h:w$ "
[21:44:46]
user01@server01:~$

2) Cambiar el indicador de bash PS2

Cuando estamos en la consola, podemos necesitar asociar muchos comandos en un comando. Hace que el comando sea demasiado largo para una línea, por lo que se puede dividir en varias líneas dando «”Al final de cada línea. El interactivo predeterminado PS2 La solicitud de valor para un comando de varias líneas es «>“Lo que indica que puede continuar el comando en la segunda línea y así sucesivamente.

$ echo $PS2
>

Ejemplo 1: El uso predeterminado de PS2

# apt-get update && 
> apt-get -y install mysql-client python-setuptools curl git unzip apache2 php && 
> apt-get upgrade

Ejemplo 2: Reemplazará el valor por una oración. Tenga en cuenta el escape antes de la última cita.

# export PS2=”incomplete? continue here-> ”
# apt-get update && 
incomplete? continue here-> apt-get -y install curl git unzip apache2 && 
incomplete? continue here-> apt-get upgrade


3) Cambiar el indicador de bash PS3

PS3 es utilizado por el Seleccione operador dentro de un script bash. Es difícil tener su valor en una consola simple. Para mostrar de qué estamos hablando, necesitamos escribir un script bash simple que nos ayudará a ver el valor. El valor por defecto PS3 el mensaje de valor es «#?«

Ejemplo 1: Copiaremos el contenido a continuación en un archivo llamado ps3-value.sh

#!/bin/bash
echo "please select a value to display a month on the list below"
select i in jan feb mar apr exit
do
    case $i in
       jan) echo "January";;
       feb) echo "February";;
       mar) echo "March";;
       exit) exit;;
    esac
done

Ejemplo 2: Una prueba del guión para mostrar el valor de PS3

$ chmod +x ps3-value.sh
:~$./ps3-value.sh
1) jan
2) feb
3) mar
4) exit
#? 2
February
#?

Tenga en cuenta que «#?«Es el valor de PS3

Ejemplo 3: Modifique el valor predeterminado a «opción» y muéstrelo ejecutando el script

$ export PS3="choice: "
$./ps3-value.sh
Select a value to display a month on the below
1) jan
2) feb
3) mar
4) exit
choice: 2
February
choice:

Mira eso elección es nuestro nuevo valor

4) Cambiar el indicador de bash PS4

los PS4 muestra cada línea de un script bash cuando estamos en modo de depuración antes de ejecutar líneas. Es útil saber qué línea no da el resultado de asistencia. Podemos mostrar el valor de PS4 con el comando echo. Pero en un script bash, podemos verlo usando bash -x para la ejecución. El valor por defecto PS4 el mensaje de valor es «+«

Ejemplo 1: Cree un archivo ps4-value.sh con el mismo contenido de ps3-value.sh y modifique el valor predeterminado

$ echo $PS4
+
$ export PS4="[script line->:] "
$ chmod +x ps4-value.sh
$ bash -x ps4-value.sh 
[script line->: ]echo 'Please select a value to display a month on the list below'
Please select a value to display a month on the list below
[script line->: ]select i in jan feb mar apr bye
1) jan
2) feb
3) mar
4) apr
5) bye
#? 3
[script line->: ]case $i in
[script line->: ]echo March
March
#? 1
[script line->: ]case $i in
[script line->: ]echo January
January

Para hacer cambios permanentes

Para que PS1 sea persistente al reiniciar, debe agregar el comando de exportación con la variable al archivo .bash_profile.

$cat .bash_profile
export PS1="[d][t][u@h]"

Luego cargue su archivo .bash_profile predeterminado

$ . .bash_profile

Conclusión

Ahora conoce la función de los diferentes indicadores de bash y cómo modificar cada uno. Es importante antes de la modificación guardar el archivo y debe poder restaurarlo si aparece un error.

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