Você está na página 1de 3

Como cambiar el prompt del shell

Si acostumbras trabajar en la lnea de comandos, muy posiblemente uses el shell bash (Bourne Again Shell, derivado del bourne shell de Unix), con un simple echo de la variable $SHELL puedes determinarlo: echo $SHELL. Si es el caso, entonces tu prompt debe de verse parecido a este:

[sergio@linuxtotal ~]$
Que indicara al usuario (Sergio) y el equipo en el que est (linuxtotal), ~ indica HOME (en este caso /home/Sergio) o directorio de inicio, esta parte cambia cada vez que se ingresa a otro directorio:

[sergio@linuxtotal ~]$ cd /etc [sergio@linuxtotal etc]$


Algo til, pero porque mejor no personalizarlo a nuestro gusto, as que empecemos por partes.

Secuencias de escape para el prompt


El prompt se establece a travs de la variable de entorno PS1:

[sergio@linuxtotal ~]$ echo $PS1 [\u@\h \W]\$


Se puede apreciar que se utilizan secuencias de escapes para ir construyendo el prompt, cada secuencia se indica con '\' seguido de un comando como 'u' (user) o 'h' (host), los dems caracteres como [,],@, espacio, etc. son opcionales y puedes elegirlos t al acomodo que desees, las secuencias de escape son las siguientes: \a un carcter ASCII de ring \d la fecha actual en formato "dia_sem mes da", "dom nov 18" \e un carcter ASCII de escape \h el nombre del equipo hasta el primer ., ejemplo linuxtotal de linuxtotal.com.mx \H el nombre del equipo \n nueva lnea \r retorno de carro, enter \s el nombre del shell \t el tiempo actual en formato de 24 horas HH:MM:SS \T el tiempo actual en formato de 12 horas HH:MM:SS \@ el tiempo actual en formato de 12 horas con am/pm \u el usuario actual \v la versin de bash \V el nmero de release de batch, versin + parche \w el directorio de trabajo actual, path \W el nombre del directorio actual \! el nmero en el historial del comando \# el nmero de comando de este comando \$ si el usuario es root (UID=0) se indica un '#', un usuario normal '$' \\ diagonal Universidad de las Amricas Miguel ngel Tupiza

\[ inicio de una secuencia de caracteres no imprimibles \] fin de la secuencia de caracteres no imprimibles Conociendo lo anterior podemos ahora tener un nuevo prompt:

[sergio@linuxtotal etc]$ PS1='(\t)[\u-\W]\$> ' (19:26:02)[sergon-etc]$>


Solo se indica el cambio a PS1, con PS1=' ', entre las comillas simples va la nueva secuencia que se desea, as que personaliza el tuyo.

Aade color a tu prompt


El shell est lleno comandos muy poco usados, uno de estos es tput, que permite cambiar las caractersticas o capacidades disponibles para la terminal, disponibles a travs de la base de datos llamada terminfo. Entre las caractersticas (hay bastantes) que podemos modificar de una terminal estn el color de fondo y de frente (background y foreground) del texto a travs de las siguientes opciones:

setaf [0-7] cambia el color de frente setab [0-7] cambia el color de fondo bold modo negritas dim modo de poco brillo sgr0 apaga las caractersticas o atributos que se hayan indicado previamente

En cuanto a los cdigos de color son los siguientes

0 negro 1 rojo 2 verde 3 caf 4 azul 5 morado 6 cyan 7 gris Puedes probar en una terminal escribiendo lo siguiente: tput setaf 1 y el texto se cambiar a rojo y puedes aadir por ejemplo un fondo verde tput setb 2 y te dar un fondo verde para el text. As que digamos, en base al prompt anterior, que se desea la hora en rojo y negritas, esto lo hara:

(20:05:52)[sergon-~]$> PS1='\[$(tput setaf 1)(\t)$(tput sgr0)\][\u\W]\$> ' (20:06:43)[sergon-~]$>

Veamos por partes: \[ inicio de secuencia de caracteres no imprimibles $(tput setaf 1) cambia a color rojo el texto, $(comando) expande el resultado de un comando que se ejecuta (\t) lo que se ve visible en pantalla (20:06:43) $(tput sgr0) apagamos los atributos, si no lo hacemos todo quedar en rojo \] termina la secuencia de caracteres no imprimibles No es tan complicado una vez que entendimos lo que sucede. Y es posible agregar ms caractersticas en un sola invocacin de $(), $(tput bold; tput setaf 1). Ahora bien, una vez cambiado tu prompt, este no permanecer as, si cierras la sesin o la terminal y vuelves a ingresar, notars que sigues con tu mismo y aburrido prompt de siempre, Miguel ngel Tupiza

Universidad de las Amricas

el cambio a la variable PS1 hay que agregarlo a tu archivo de inicializacin de tu sesin, generalmente '.bashrc' o '.bash_profile', incluso podras poner los colores en variables, para facilitar el uso de la definicin de PS1:

# se aade lo siguiente a .bashrc # colores del texto rojo=$(tput setaf 1) verde=$(tput setaf 2) # colores de fondo azulF=$(tput setab 4) grisF=$(tput setab 7) # sin color sc=$(tput sgr0) PS1='\[$rojo(\t)$sc\][\u-\W]\$> '

Universidad de las Amricas

Miguel ngel Tupiza

Você também pode gostar