Buscar..


Cambiar el indicador de PS1

Para cambiar PS1, solo tienes que cambiar el valor de la variable de shell PS1. El valor se puede configurar en el archivo ~/.bashrc o /etc/bashrc , dependiendo de la distribución. PS1 se puede cambiar a cualquier texto plano como:

PS1="hello "

Además del texto sin formato, se admiten una serie de caracteres especiales de escape de barra invertida:

Formato Acción
\a un personaje de campana ASCII (07)
\d la fecha en el formato "Fecha del mes de la semana" (por ejemplo, "Mar 26 de mayo")
\D{format} 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 temporal específica del entorno local. Los tirantes son necesarios.
\e un personaje de escape ASCII (033)
\h el nombre de host hasta el primer '.'
\H el nombre de host
\j el número de trabajos actualmente gestionados por el shell
\l el nombre base 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 barra final)
\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 a.m./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)
\w 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 histórico 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 utilizarse para incrustar una secuencia de control de terminal en el indicador
\] terminar una secuencia de caracteres no imprimibles

Entonces, por ejemplo, podemos configurar PS1 para:

PS1="\u@\h:\w\$ "

Y saldrá:

usuario @ máquina: ~ $

Mostrar una rama git usando PROMPT_COMMAND

Si está dentro de una carpeta de un repositorio de git, puede ser bueno mostrar la rama actual en la que se encuentra. En ~/.bashrc o /etc/bashrc agregue lo siguiente (se requiere git para que esto funcione):

function prompt_command {
    # Check if we are inside a git repository
    if git status > /dev/null 2>&1; then
        # Only get the name of the branch
        export GIT_STATUS=$(git status | grep 'On branch' | cut -b 10-)
    else
        export GIT_STATUS=""
    fi
}
# This function gets called every time PS1 is shown
PROMPT_COMMAND=prompt_command

PS1="\$GIT_STATUS \u@\h:\w\$ "

Si estamos en una carpeta dentro de un repositorio de git, esto generará:

usuario de la rama @ máquina: ~ $

Y si estamos dentro de una carpeta normal:

usuario @ máquina: ~ $

Mostrar el nombre de la rama git en el indicador de terminal

Puedes tener funciones en la variable PS1, solo asegúrate de citarla o usar escape para caracteres especiales:

gitPS1(){
    gitps1=$(git branch 2>/dev/null | grep '*')
    gitps1="${gitps1:+ (${gitps1/#\* /})}"
    echo "$gitps1"
}

PS1='\u@\h:\w$(gitPS1)$ '

Te dará un mensaje como este:

user@Host:/path (master)$ 

Notas:

  • Realice los cambios en ~/.bashrc o /etc/bashrc o ~/.bash_profile o ~./profile (dependiendo del sistema operativo) y guárdelo.
  • Ejecute source ~/.bashrc (específico de la distribución) después de guardar el archivo.

Mostrar hora en terminal

timeNow(){
    echo "$(date +%r)"
}
PS1='[$(timeNow)] \u@\h:\w$ '

Te dará un mensaje como este:

[05:34:37 PM] user@Host:/path$ 

Notas:

  • Realice los cambios en ~/.bashrc o /etc/bashrc o ~/.bash_profile o ~./profile (dependiendo del sistema operativo) y guárdelo.
  • Ejecute source ~/.bashrc (específico de la distribución) después de guardar el archivo.

Colorear y personalizar el indicador de terminal

Así es como el autor configura su variable personal de PS1 :

gitPS1(){
    gitps1=$(git branch 2>/dev/null | grep '*')
    gitps1="${gitps1:+ (${gitps1/#\* /})}"
    echo "$gitps1"
}
#Please use the below function if you are a mac user
gitPS1ForMac(){
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
timeNow(){
    echo "$(date +%r)"
}
if [ "$color_prompt" = yes ]; then
  if [ x$EUID = x0 ]; then
    PS1='\[\033[1;38m\][$(timeNow)]\[\033[00m\] \[\033[1;31m\]\u\[\033[00m\]\[\033[1;37m\]@\[\033[00m\]\[\033[1;33m\]\h\[\033[00m\] \[\033[1;34m\]\w\[\033[00m\]\[\033[1;36m\]$(gitPS1)\[\033[00m\] \[\033[1;31m\]:/#\[\033[00m\] '
  else
    PS1='\[\033[1;38m\][$(timeNow)]\[\033[00m\] \[\033[1;32m\]\u\[\033[00m\]\[\033[1;37m\]@\[\033[00m\]\[\033[1;33m\]\h\[\033[00m\] \[\033[1;34m\]\w\[\033[00m\]\[\033[1;36m\]$(gitPS1)\[\033[00m\] \[\033[1;32m\]:/$\[\033[00m\] '
  fi
else
    PS1='[$(timeNow)] \u@\h \w$(gitPS1) :/$ '
fi

Y así es como se ve mi mensaje: introduzca la descripción de la imagen aquí

Referencia de color:

# Colors
txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
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' # Yellow
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' # Yellow
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
badgrn='\e[42m'   # Green
bakylw='\e[43m'   # Yellow
bakblu='\e[44m'   # Blue
bakpur='\e[45m'   # Purple
bakcyn='\e[46m'   # Cyan
bakwht='\e[47m'   # White
txtrst='\e[0m'    # Text Reset

Notas:

  • Realice los cambios en ~/.bashrc o /etc/bashrc o ~/.bash_profile o ~./profile (dependiendo del sistema operativo) y guárdelo.

  • Para root también puede que necesite editar el archivo /etc/bash.bashrc o /root/.bashrc

  • Ejecute source ~/.bashrc (específico de la distribución) después de guardar el archivo.

  • Nota: si ha guardado los cambios en ~/.bashrc , recuerde agregar la source ~/.bashrc en su ~/.bash_profile para que este cambio en PS1 se registre cada vez que se inicie la aplicación Terminal.

Mostrar el estado y el tiempo de retorno del comando anterior

A veces necesitamos una sugerencia visual para indicar el estado de retorno del comando anterior. El siguiente fragmento de código lo pone a la cabeza de la PS1.

Tenga en cuenta que la función __stat () debe llamarse cada vez que se genere un nuevo PS1, o de lo contrario se mantendría en el estado de retorno del último comando de su .bashrc o .bash_profile.

# -ANSI-COLOR-CODES- #
Color_Off="\033[0m"
###-Regular-###
Red="\033[0;31m"
Green="\033[0;32m"
Yellow="\033[0;33m"
####-Bold-####

function __stat() {
    if [ $? -eq 0 ]; then
        echo -en "$Green ✔ $Color_Off "
    else
        echo -en "$Red ✘ $Color_Off "
    fi
}

PS1='$(__stat)'
PS1+="[\t] "
PS1+="\e[0;33m\u@\h\e[0m:\e[1;34m\w\e[0m \n$ "

export PS1

introduzca la descripción de la imagen aquí



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow