Configurar Bash Prompt con Powerline-Shell-Master

Si al igual que yo, eres un amante de Bash y por cuestiones de costumbre o capricho, no te apetece usar zsh y oh my zsh para darle mas realce a tu terminal. Pues en hora buena, este tutorial te muestra como configurar paso a paso powerline-shell-master y darle una bonita apariencia a el prompt de tu shell bash. En resumida cuenta este tutorial te hará un maestro de la Personalización Bash Prompt

¿Qué es bash?

Bash (Bourne again shell) es un programa informático, cuya función consiste en interpretar órdenes, y un lenguaje de programación de consola. Está basado en la shell de Unix y es compatible con POSIX.

¿Qué es prompt?

Se llama prompt al carácter o conjunto de caracteres que se muestran en una línea de comandos para indicar que está a la espera de órdenes. Éste puede variar dependiendo del intérprete de comandos y suele ser configurable.

Descargando Powerline-Shell-Master

Powerline-Shell-Master es un proyecto libre y se encuentra en https://github.com/banga/powerline-shell

github powerline-shell

Nos dirigimos a esta ruta y lo descargamos como en formato zip.

Descarga PLS

También podemos realizarlo desde la consola con el siguiente comando:

git clone https://github.com/banga/powerline-shell.git

Configurando PowerLine-Shell-Master

Una vez descargado el proyecto lo descomprimimos:

$cd /Descargas 
$unzip powerline-shell-master.zip
$cd powerline-shell-master

Editamos el archivo de configuración config.py.dist para cargar el tema basic

$nano config.py.dist
    En la ultima linea del archivo cambiar la linea THEME = 'default' por
    THEME = 'basic'
Salir y guardar los cambios

NanoEditPLS

Ejecutamos install.py para cargar los cambios de la nueva configuración:

$python install.py
  Debe arrojar la siguiente salida:
    Created personal config.py for your customizations
    powerline-shell.py saved successfully
  Si la ejecución fue satisfactoria notaremos tres archivos de más:
    config.pyc, config.py y powerline-shell.py

InstallPLS

Ahora solo nos resta ubicar la carpeta donde debe de ir o deberia estar por comodidad y orden, movemos la carpeta a /home/user renombrandola como .power-line-shell-master, el punto precediendo el nombre es para ocultarla.

Si aun seguimos dentro del directorio retrocedemos:
$cd ..
$mv powerline-shell-master $HOME/.powerline-shell-master

mvPLS

Configurando Bash Prompt

Para configurar el prompt de bash es bastante simple ya que en el manual de powerline-shell viene la configuración adecuada para bash, mas sin embargo esta algo limitada, así que les dejare la configuración del .bashrc para que solo la peguen en su archivo .bashrc tal cual, sustituyendo la configuración anterior.

Si aun seguimos en la ruta descargas nos dirigimos a la carpeta personal
$cd ~
Hacemos una copia de seguridad de nuestro archivo .bashrc
$cp .bashrc .bashrc_old
Abrimos el archivo .bashrc con un editor de texto para editarlo
$nano .bashrc
Ya abierto borramos su contenido y lo sustituimos por el siguiente:
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar

# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
    # We have color support; assume it's compliant with Ecma-48
    # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
    # a case would tend to support setf rather than setaf.)
    color_prompt=yes
    else
    color_prompt=
    fi
fi

#config basic prompt
#if [ "$color_prompt" = yes ]; then
#    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
#else
#    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
#fi
#unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
#case "$TERM" in
#xterm*|rxvt*)
#    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
#    ;;
#*)
#    ;;
#esac

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi

# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
## Alias update the operative system
alias system-update="sudo apt-get update && sudo apt-get upgrade"

# Add an "alert" alias for long running commands.  Use like so:
#   sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

#grep command color activation
GREP_OPTIONS=--color 

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

#Configuration powerline-shell-master
function _update_ps1() {
    PS1="$($HOME/.powerline-shell-master/powerline-shell.py $? 2> /dev/null)"
}

if [ "$TERM" != "linux" ]; then
    PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi

Al finalizar la configuración, si abres un terminal se visualizará de la siguiente forma.

finalPLS

Importante si quieres que tu prompt al loguearte como root, se visualice igual que en tu usuario debes enviar a la ruta /root el .bashrc que ya has configurado

Configurando el prompt del root

perspectivaRootPLS

Si leiste la alerta y le tomaste importancia, adelante vamos a configurar el propt del root, esto no sera tardado solo es copiar el archivo .bashrc previamente editado y mandarlo a la ruta /root.

Dentro de la ruta de nuestra carpeta personal
$sudo cp -f .bashrc /root/.bashrc
[sudo] password for (user):
Una ves echo esto comprobamos que el archivo /root/.bashrc tenga la misma configuración
$sudo cat /root/.bashrc

Personalización Bash Prompt

Gracias por ver este tutorial, y si eres de los que lo llevo a la practica en hora buena me da gusto que así sea, pues este manual o tutorial fue creado con la finalidad de ser útil. Se que para muchos esto no es un tema tan controversial pero aveces es tedioso trabajar con un terminal poco atractivo, jeje cuestión de gustos.


7 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Gerard dijo

    Hola buenas!!

    Me ha gustado mucho tu post, lo he probando en el nuevo Mint 18.1 y al cabar el resultado no ha sido el mismo…

    Parece ser que no cuento con las fuentes del sistema adecuadas para visualizar bien el prompt con las flechas, ya que los colores si se muestran correctamente.

    No se si alguien mas le pasa pero querría saber si hay alguna solución, o alguna página de descarga de las fuentes adecuadas para que se muestre bien.

    Gracias!!

    1.    Nexcoyotl dijo

      Hola amigo gracias por comentar, si en efecto se me olvido mencinar que se require de las fuentes adecuadas para mejorar la apariencia. Estas fuentes son Powerline Fonts y las encuentras en https://github.com/powerline/fonts

    2.    Jesus dijo

      He tenido que cambiar en las preferencias del terminal, la opcion de ‘Codificaciones’ a ‘UTF-8 Unicode’ y resuelto también.

      1.    Nexcoyotl dijo

        Si de echo yo también trabajo con la codificación ‘utf-8 unicode’, gracias por comentar 😀

  2.   Cjencho9000 dijo

    Ohm, pues no solo queda bien si no facilita la lectura, buen Tuto.

  3.   Paradox dijo

    Hola, muy buen post gracias, aunque a mí me ha pasado que me aparecieron todos los colores/segmentos de la barra en gris, y un prompt de este tipo xxxxxx   ~  $  qué tengo que hacer para arreglar eso? Muchas gracias excelente aporte, saludos

  4.   chencho9000 dijo

    Lo intenté y la consola funcionaba pero me quedé sin prompt, menos mal que no fue nada grave y lo pude reparar.