Personalizar el prompt del sistema del intérprete de comandos Bash

Escrito por el , actualizado el .
gnu-linux planeta-codigo
Enlace permanente Comentarios

GNU

Linux

El prompt de la terminal es el símbolo del sistema que precede al comando que introducimos en la terminal y por defecto indica el directorio de trabajo que utilizarán los comandos y el directorio que utilizarán las rutas relativas. El prompt del intérprete de comandos Bash se puede personalizar para por ejemplo modificar el color de su texto y la información que incluye con las preferencias del usuario.

El prompt se configura con la variable de entorno PS1 que en Bash está en el directorio personal definido en el archivo .bashrc. Los colores se especifican con una secuencia de caracteres y números que forman códigos de escape que son interpretados de forma especial, estas secuencias están mezclados con las secuencias de la información a mostrar. Como conocer las secuencias de caracteres con los códigos de escape ANSI para los colores y letras para la información es complicado de escribir o conocer al detalle en la web Bash $PS1 Generator hay un asistente que facilita el crear un prompt a nuestro gusto de forma sencilla y correcta.

El siguiente es el que utilizo en mi sistema con colores, el nombre del usuario, el nombre sistema y el directorio de trabajo actual.

Prompt de la terminal personalizado

Prompt de la terminal personalizado

Según se edita el prompt el asistente previsualiza como queda en la sección Preview, una vez que el prompt es el que deseamos en la sección Result el asistente ofrece el contenido de la variable de entorno PS1 que hay que añadir o cambiar en el archivo ~/.bashrc.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#
# ~/.bashrc
#

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

alias ls='ls --color=auto'
#PS1='[\u@\h \W$ '

#
GIT_PS1_SHOWDIRTYSTATE="true"
GIT_PS1_SHOWSTASHSTATE="true"
GIT_PS1_SHOWUNTRACKEDFILES="true"
GIT_PS1_SHOWUPSTREAM="true"
GIT_PS1_SHOWCOLORHINTS="true"
source ~/.git-prompt.sh

PS1='[\[\033[01;34m\]\u\[\033[00m\]@\[\033[01;35m\]\h\[\033[00m\] \W]\$ '
PROMPT_COMMAND='__git_ps1 "[\[\033[01;34m\]\u\[\033[00m\]@\[\033[01;35m\]\h\[\033[00m\] \W" "]\$ "'
bashrc

Si quieres mostrar alguna información que sea el resultado de algún comando también se puede añadir al prompt. Por ejemplo, supón que se desea añadir la hora del sistema al prompt útil si se quiere a modo de registro para conocer posteriormente a que hora se lanzó un comando, la información de la hora entre otras posibles cosas relacionadas con la fecha la devuelve el comando date. El siguiente script de Bash usando el comando date proporciona la información de la hora a añadir en este caso.

1
2
$ date +%H:%M

date.sh

Ahora hay que incluir esta información en el prompt de la siguiente forma.

1
2
3
...

PROMPT_COMMAND='__git_ps1 "($(date +%H:%M))[\[\033[01;34m\]\u\[\033[00m\]@\[\033[01;35m\]\h\[\033[00m\] \W" "]\$ "'
bashrc-date

Prompt de la terminal personalizado con el resultado de un comando

Prompt de la terminal personalizado con el resultado de un comando

Otro caso habitual es añadir la rama de git del directorio actual de trabajo y si esta tiene cambios como comento en Prompt de la terminal personalizado en carpetas de git con el intérprete Bash. El script necesario que proporciona Git es más complejo que el caso anterior pero con la misma finalidad, el script está en git-prompt.sh y requiere modificar la variable de entorno PS1 o bien PROMPT_COMMAND.

Prompt de la terminal por defecto

Prompt de la terminal personalizado en carpeta de git


Comparte el artículo: