GNU/Linux >> Tutoriales Linux >  >> Linux

Bash Shell PS1:10 ejemplos para hacer que su Linux sea tan rápido como Angelina Jolie

Foto cortesía de f1r3storm85

En el artículo anterior, hablamos sobre las variables de entorno de Linux PS[1-4] y PROMPT_COMMAND. Si se usa de manera efectiva, PS1 puede proporcionar información valiosa directamente en el símbolo del sistema.

En Tomb Raider, Angelina Jolie tiene todos los artilugios y armas a su alcance para resolver el misterio con estilo. Si bien el dispositivo y el estilo de Angelina Jolie son difíciles de igualar, al menos intentemos hacer que el viejo indicador de Linux sea muy funcional y elegante usando los 10 ejemplos proporcionados en este artículo.

1. Mostrar nombre de usuario, nombre de host y directorio de trabajo actual en el indicador

La PS1 en este ejemplo muestra las siguientes tres informaciones en el aviso:

  • \u – Nombre de usuario
  • \h – Nombre de host
  • \n – Ruta completa del directorio de trabajo actual
-bash-3.2$ export PS1="\u@\h \w> "

ramesh@dev-db ~> cd /etc/mail
ramesh@dev-db /etc/mail>

2. Mostrar la hora actual en el aviso

En la variable de entorno PS1, puede ejecutar directamente cualquier comando de Linux, especificando en el formato $(linux_command). En el siguiente ejemplo, se ejecuta el comando $(fecha) para mostrar la hora actual dentro del aviso.

ramesh@dev-db ~> export PS1="\u@\h [\$(date +%k:%M:%S)]> "

ramesh@dev-db [11:09:56]>

También puede usar \t para mostrar la hora actual en el formato hh:mm:ss como se muestra a continuación:

ramesh@dev-db ~> export PS1="\u@\h [\t]> "
ramesh@dev-db [12:42:55]>

También puede usar \@ para mostrar la hora actual en formato de 12 horas am/pm como se muestra a continuación:

ramesh@dev-db ~> export PS1="[\@] \u@\h> "
[04:12 PM] ramesh@dev-db>

3. Muestra la salida de cualquier comando de Linux en el indicador

Puede mostrar la salida de cualquier comando de Linux en el indicador. El siguiente ejemplo muestra tres elementos separados por | (tubería) en el símbolo del sistema:

  • \!: El número de historial del comando
  • \h: nombre de host
  • $kernel_version: La salida del comando uname -r de la variable $kernel_version
  • \$?: Estado del último comando
ramesh@dev-db ~> kernel_version=$(uname -r)
ramesh@dev-db ~> export PS1="\!|\h|$kernel_version|\$?> "
473|dev-db|2.6.25-14.fc9.i686|0>

4. Cambiar el color de primer plano del aviso

Muestra el indicador en color azul, junto con el nombre de usuario, el host y la información del directorio actual

$ export PS1="\e[0;34m\u@\h \w> \e[m"
[Note: This is for light blue prompt]

$ export PS1="\e[1;34m\u@\h \w> \e[m"
[Note: This is for dark blue prompt]
  • \e[ – Indica el comienzo de la indicación de color
  • x;ym – Indica código de color. Utilice los valores de código de color que se mencionan a continuación.
  • \e[m – indica el final del indicador de color

Tabla de códigos de colores:

Black 0;30
Blue 0;34
Green 0;32
Cyan 0;36
Red 0;31
Purple 0;35
Brown 0;33
[Note: Replace 0 with 1 for dark color]

Haga que el cambio de color sea permanente agregando las siguientes líneas a .bash_profile o .bashrc

STARTCOLOR='\e[0;34m';
ENDCOLOR="\e[0m"
export PS1="$STARTCOLOR\u@\h \w> $ENDCOLOR"

5. Cambiar el color de fondo del aviso

Cambie el color de fondo especificando \e[{code}m en el aviso de PS1 como se muestra a continuación.

$ export PS1="\e[47m\u@\h \w> \e[m"
[Note: This is for Light Gray background]

Combinación de fondo y primer plano

export PS1="\e[0;34m\e[47m\u@\h \w> \e[m"
[Note: This is for Light Blue foreground and Light Gray background]

Agregue lo siguiente a .bash_profile o .bashrc para que el color de fondo y de primer plano anterior sea permanente.

STARTFGCOLOR='\e[0;34m';
STARTBGCOLOR="\e[47m"
ENDCOLOR="\e[0m"
export PS1="$STARTFGCOLOR$STARTBGCOLOR\u@\h \w> $ENDCOLOR"

Juega usando el siguiente color de fondo y elige el que más te guste:

  • \e[40m
  • \e[41m
  • \e[42m
  • \e[43m
  • \e[44m
  • \e[45m
  • \e[46m
  • \e[47m

6. Mostrar varios colores en el aviso

También puede mostrar varios colores en el mismo aviso. Agregue la siguiente función a .bash_profile

function prompt {
  local BLUE="\[\033[0;34m\]"
  local DARK_BLUE="\[\033[1;34m\]"
  local RED="\[\033[0;31m\]"
  local DARK_RED="\[\033[1;31m\]"
  local NO_COLOR="\[\033[0m\]"
  case $TERM in
    xterm*|rxvt*)
      TITLEBAR='\[\033]0;\u@\h:\w\007\]'
      ;;
    *)
      TITLEBAR=""
      ;;
  esac
  PS1="\u@\h [\t]> "
  PS1="${TITLEBAR}\
  $BLUE\u@\h $RED[\t]>$NO_COLOR "
  PS2='continue-> '
  PS4='$0.$LINENO+ '
}

Puede volver a iniciar sesión para que los cambios surtan efecto o obtener el .bash_profile como se muestra a continuación.

$. ./.bash_profile
$ prompt
ramesh@dev-db [13:02:13]>

7. Cambie el color del aviso usando tput

También puede cambiar el color del indicador de PS1 usando tput como se muestra a continuación:

$ export PS1="\[$(tput bold)$(tput setb 4)$(tput setaf 7)\]\u@\h:\w $ \[$(tput sgr0)\]"

Capacidades de color de entrada:

  • tput setab [1-7] – Establecer un color de fondo usando escape ANSI
  • tput setb [1-7] – Establecer un color de fondo
  • tput setaf [1-7] – Establecer un color de primer plano usando escape ANSI
  • tput setf [1-7] – Establecer un color de primer plano

Capacidades del modo de texto tput:

  • escribir en negrita – Establecer modo negrita
  • tput dim – activar el modo medio brillante
  • tput smul – comienza el modo subrayado
  • tput rmul – salir del modo subrayado
  • entrar revoluciones – Activar el modo inverso
  • enviar smso – Ingrese al modo destacado (negrita en rxvt)
  • tput rmso – Salir del modo destacado
  • tput sgr0 – Desactivar todos los atributos

Código de color para tput:

  • 0:negro
  • 1:rojo
  • 2 – Verde
  • 3 – Amarillo
  • 4 – Azul
  • 5:magenta
  • 6:cian
  • 7 – Blanco

8. Cree su propio aviso usando los códigos disponibles para la variable PS1

Utilice los siguientes códigos y cree su propio indicador personal de PS1 Linux que sea funcional y se adapte a sus gustos. ¿Qué código de esta lista será muy útil para el uso diario? Deja tu comentario y hazme saber qué código de PS1 has usado para tu solicitud de Linux.

  • \a un carácter de campana ASCII (07)
  • \d la fecha en formato "Día de la semana Mes Fecha" (por ejemplo, "martes 26 de mayo")
  • \D{formato} – el formato se pasa a strftime(3) y el resultado se inserta en la cadena de solicitud; un formato vacío da como resultado una representación de tiempo específica de la localidad. Los frenos son obligatorios
  • \e un carácter de escape ASCII (033)
  • \h el nombre de host hasta la primera parte
  • \H el nombre de host
  • \j el número de trabajos administrados actualmente por el shell
  • \l el nombre base del nombre del dispositivo terminal del shell
  • \n nueva línea
  • \r retorno de carro
  • \s el nombre del shell, el nombre base de $0 (la parte que sigue a la última barra)
  • \t la hora actual en formato HH:MM:SS de 24 horas
  • \T la hora actual en formato HH:MM:SS de 12 horas
  • \@ la hora actual en formato de 12 horas am/pm
  • \A la hora actual en formato HH:MM de 24 horas
  • \u el nombre de usuario del usuario actual
  • \v la versión de bash (por ejemplo, 2.00)
  • \V el lanzamiento de bash, versión + nivel de parche (por ejemplo, 2.00.0)
  • \n el directorio de trabajo actual, con $HOME abreviado con una tilde
  • \W el nombre base del directorio de trabajo actual, con $HOME abreviado con una tilde
  • \! 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 $
  • \nnn el carácter correspondiente al número octal nnn
  • \\ una barra invertida
  • \[ comenzar una secuencia de caracteres no imprimibles, que podrían usarse para incrustar una secuencia de control de terminal en el aviso
  • \] finalizar una secuencia de caracteres no imprimibles

9. Use la función bash shell dentro de la variable PS1

También puede invocar una función bash shell en la PS1 como se muestra a continuación.

ramesh@dev-db ~> function httpdcount {
>  ps aux | grep httpd | grep -v grep | wc -l
> }

ramesh@dev-db ~> export PS1="\u@\h [`httpdcount`]> "
ramesh@dev-db [12]>
[Note: This displays the total number of running httpd processes]

Puede agregar la siguiente línea a .bash_profile o .bashrc para que este cambio sea permanente:

function httpdcount {
  ps aux | grep httpd | grep -v grep | wc -l
}
export PS1='\u@\h [`httpdcount`]> '

10. Usar script de shell dentro de la variable PS1

También puede invocar un script de shell dentro de la variable PS1. En el siguiente ejemplo, ~/bin/totalfilesize.sh, que calcula el tamaño de archivo total del directorio actual, se invoca dentro de la variable PS1.

ramesh@dev-db ~> cat ~/bin/totalfilesize.sh

for filesize in $(ls -l . | grep "^-" | awk '{print $5}')
do
  let totalsize=$totalsize+$filesize
done
echo -n "$totalsize"

ramesh@dev-db ~> export PATH=$PATH:~/bin
ramesh@dev-db ~> export PS1="\u@\h [\$(totalfilesize.sh) bytes]> "
ramesh@dev-db [534 bytes]> cd /etc/mail
ramesh@dev-db [167997 bytes]>
[Note: This executes the totalfilesize.sh to display the total
       file size of the current directory in the PS1 prompt]


¿Cuánta personalización le has hecho a tu PS1? ¿Podrá tu PS1 vencer a Angelina Jolie? Deja un comentario y comparte tu PS1 valor de solicitud.

Lecturas recomendadas

Libro de cocina Bash, de Carl Albing, JP Vossen y Cameron Newham . Bash es un caparazón muy poderoso. Este libro lo ayudará a dominar el bash shell y ser altamente productivo. Si usted es un administrador de sistemas, un DBA o un desarrollador, debe escribir un script de shell en algún momento. Un administrador de sistemas sabio sabe que una vez que haya dominado las técnicas de secuencias de comandos de shell, puede poner sus servidores en modo de piloto automático dejando que las secuencias de comandos de shell hagan el trabajo duro. Para llegar al modo de piloto automático de sysadmin, definitivamente necesita dominar los ejemplos proporcionados en este libro de cocina. Hay muy pocos libros de shell de Bash por ahí. Pero este libro los supera a todos al dar muchos ejemplos detallados.
 
Recomendación de libros adicionales sobre Linux:12 libros increíbles y esenciales sobre Linux para enriquecer su cerebro y su biblioteca
 
Si le gustó este artículo, márquelo como favorito en del.icio.us y Stumble it.


Linux
  1. Cómo configurar su variable $PATH en Linux

  2. Cómo cambiar el color de tu terminal Linux

  3. Prepara tu indicador de Bash para el invierno en Linux

  4. Cómo Navidadizar su Terminal Linux y Shell

  5. ¿Cómo acortar el indicador de Bash en Linux?

Cómo personalizar Bash Prompt en Linux

El comando make de Linux explicado con ejemplos

Haz que tu caparazón de pescado sea hermoso con Oh My Fish

Comando Bash Echo explicado con ejemplos en Linux

Cómo instalar Linux Bash Shell en Windows 10

Comando make de Linux con ejemplos