Personaliza tu bash

8 julio, 2010 § 4 comentarios

Personaliza tu terminal

Si bien para algunos el uso de la terminal es algo complicado el proposito de esta guia es que su uso se vuelva mas comodo, util y sobre todo mas productivo asi que empezemos

!.- Tamaño :

Si bien en ubuntu en las opciones de personalizar los perfiles de la terminal podemos elegir el tamaño para cada ventana de la terminal que abramos en arch no existe o al menos yo no he encontrado esta opcion XD asi que para lograr el tamaño deseado de la terminal y que sea asi por defecto

sudo gedit /usr/share/vte/termcap/xterm

(necesitas permisos de root)

… y buscar la línea que contiene el siguiente texto:

:co#80:it#8:li#24:\

Esta línea indica el tamaño por defecto del terminal, en este caso 80 columnas y 24 líneas. Si, por ejemplo, queremos cambiar este tamaño por defecto a 100 columnas y 30 líneas, modificamos la línea anterior de la siguiente manera:

:co#90:it#8:li#17:\

Como vemos, “co” indica el número de columnas y “li” el número de líneas.

Hacemos las modificaciones que queramos y guardamos el fichero. Al abrir un nuevo terminal veremos que ya se aplica la nueva configuración.

Quedando asi :

2.- Prompt

El prompt corresponde a esos primeros caracteres que vemos en la terminal, a la espera de comandos, esto se puede configurar ya que existe un archivo en la carpeta personal, por defecto /home/usuario, cuyo nombre es .bashrc y que es el que contiene la configuración de nuestra consola, terminal, konsole, bash, …

lo priemero sera saber cual es la actual configuracion y eso corresponde al $PS1

para saber cual el en una ponemos lo siguiente :

echo $PS1

y nos dara la actual configuracion un ejemplo seria

PS1='[\u@\h \W]\$ ‘

donde se puede ver el nombre del usuario actual (\u), seguido por un “@” el nombre del host (\h), el directorio en el que nos encontramos (\W) y el carácter $

esta configuracion la podemos cambiar siguiendo la lista de las siguientes variables que son las que nos mostraran cada uno una parte del promtp

\d
la fecha en el formato “Semana Mes N. dia”
\D{formato}
la fecha con el formato deseado si el formato esta vacio se utliliza el “localtimel”
los corchetes son necesarios
\h
el nombre del host
\j
el numero de procesos actualez
\n
nueva linea
\t
la hora en formato de 24 horas HH:MM:SS
\T
la hora en formato de 12 horas HH:MM:SS
\@
la hora en formato de 12 horas Am/Pm
\A
la hora en formato de 24 horas HH:MM
\u
el nombre del usuario
\v
la version del bash
\V
la version del bash con mas informacion
\w
el directorio actual con $HOME abreviado con una tilde
\W
el nombre del direcotorio superion y actual con $HOME abreviado con una tilde
\!
el numero historico de este comando
\#
el numero de comonado
\$
si la UID es 0, un # (root) , de otra forma $
\nnn
the character corresponding to the octal number nnn
\\
una diagonal
\[
el principio de una secuencia de caracteres no imprimibles puede ser usado para colores y/o comandos
\]
final de una secuencia de caracteres no imprimibles

Ahora nos toca armar nuestra configuracion deseada y la probaremos con el comando
export para que no sea permanente +

export PS1=”Mi nuevo prompt”

ya que lo tengamos como queramos es hora de editar nuetro archivo mencionado arriba el .bashrc ubicado en nuestro home/usuario .

3.- Personalizacion:

Lo primero sera agregr un esquema de colores como el que sigue :

#################
# Definición de colores #
#################

BLACK=”\33[0;30m”
BLUE=”\33[0;34m”
REEN=”\33[0;32m”
CYAN=”\33[0;36m”
RED=”\33[0;31m”
PURPLE=”\33[0;35m”
BROWN=”\33[0;33m”
LIGHTGRAY=”\33[0;37m”
DARKGRAY=”\33[1;30m”
LIGHTBLUE=”\33[1;34m”
LIGHTGREEN=”\33[1;32m”
LIGHTCYAN=”\33[1;36m”
LIGHTRED=”\33[1;31m”
LIGHTPURPLE=”\33[1;35m”
YELLOW=”\33[1;33m”
WHITE=”\33[1;37m”
BLINK_BLACK=”\33[5;30m”
BLINK_BLUE=”33[5;34m”
BLINK_GREEN=”\33[5;32m”
BLINK_CYAN=”\33[5;36m”
BLINK_RED=”\33[5;31m”
BLINK_PURPLE=”\33[5;35m”
BLINK_BROWN=”\33[5;33m”
BLINK_LIGHTGRAY=”\33[5;1;37m”
BLINK_DARKGRAY=”\33[5;1;30m”
BLINK_LIGHTBLUE=”\33[5;1;34m”
BLINK_LIGHTGREEN=”\33[5;1;32m”
BLINK_LIGHTCYAN=”\33[5;1;36m”
BLINK_LIGHTRED=”\33[5;1;31m”
BLINK_LIGHTPURPLE=”\33[5;1;35m”
BLINK_YELLOW=”\33[5;33m”
BLINK_WHITE=”\33[5;37m”
NORMAL=”\33[0;0m”

Y entonces editamos nuestra linea que dice PS1 para que quede
de la forma que queramos agregando un color por cada parte ej:

PS1=”${GREEN}\u${RED}@${GREEN}\h${BLUE}\$>${NORMAL} “

de esta forma quedara el usuario en verde la arroba en rojo el host en verde no nos muestra el directorio actual nos muestra el simbolo de usuario y el de mas/menos en azul y el comando en blanco :

Algunos ejemplos :

1- A tres lineas con una carita que nos muestra si feliz en amarillo si el comando esta correcto rojo y triste si esta mal primer linea para el directorio segunda para el promtp tercera para el comando con los colores definidos (este lo uso yo)

PS1=”${NORMAL}D${GREEN}=${RED}[${GREEN}\w${RED}]\n${BLUE}\u${RED}@${BLUE}\h${RED}\$\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\`${NORMAL}\n\ ”

2.- directorio recortado y colores:

para esto tabien tenemos que agregar l siguiente linea

PROMPT_COMMAND=’DIR=`pwd|sed -e “s!$HOME!~!”`; if [ ${#DIR} -gt 30 ]; then CurDir=${DIR:0:12}…${DIR:${#DIR}-15}; else CurDir=$DIR; fi’

y el PS1 queda asi

PS1=”${GREEN}\u${RED}@${GREEN}\h${NORMAL} [\$CurDir] ${BLUE}\$>${NORMAL} “

3.- alias

Los alias nos sirven para hacer el trabajo de la consola mas rapido a la hora de escribir los comandos siendo que en ves de escribir todo el comando solo escribimos el alias es decir
en vez de

sudo pacman-color -Sy (archlinux)
o
sudo aptitude install (debian)

solo pondremos

pacinstala
o
instala

Aquí les dejo unos alias utiles :

Alias para ahorrar tiempo:

[Debian y derivados (Ubuntu, Linux Mint, Guadalinex, … )]
alias aptbusca=’sudo aptitude search ‘
alias aptinstala=’sudo aptitude install ‘
alias actualiza=’sudo aptitude update && sudo aptitude upgrade’

[Archlinux]
alias elimina=’sudo pacman-color -Rsn’
alias yact=’yaourt -Syu –aur’
alias pacinstala=’sudo pacman-color -Sy’
alias pacbusca=’sudo pacman-color -Sys’
alias actualiza=’sudo pacman-color -Syu’

Colorizar la salida de ls
eval “`dircolors -b`” (para que cargue los colores de cada tipo de archivo)
alias ls=’ls –color=auto’
alias dir=’dir –color=auto’

Colorizar la salida de egrep y derivados:
alias grep=’grep –color=auto’
alias fgrep=’fgrep –color=auto’
alias egrep=’egrep –color=auto’

4.- Mensaje de bienvenida

Una de las cosas que me gustaron mucho de linux mint fue el detalle de cowsay y fortune al abrir una consola para hacer esto ay varias formas lo mas sencillo sera agregar lo siguiente al archivo .bashrc

fortune | cowsay

de esta forma cada vez que iniciemos se dara una frase de fortune dicha por la vaca :

si queremos agregar un color podemos usar las variables que usamos para el PS1 de la siguiente manera

echo -ne “$GREEN”
fortune | cowsay

de esta manera el mensaje y la vaca seran dados en colo verde :

si queremos que sea de completamente aleatorio el animal que nos dice la fortuna tendremos que crear un pequeño script darle permisos de ejecucion y agregarlo al archivo.
script :

#!/bin/bash

# archivos de figuras de cowsay en un arreglo
vacas=(`ls /usr/share/cows`)

# total de figuras encontradas (elementos en el arreglo)
TVACAS=${#vacas[*]}

# selecciona un numero al azar entre 0 y TVACAS
NVACA=$((RANDOM%$TVACAS))

# nombre del archivo cowsay a utilizar
vaca=${vacas[$NVACA]}

# forma el saludo con fortune y cowsay
fortune | cowsay -f $vaca

y asi quedaria en el bashrc:

echo -ne “$GREEN”
$HOME/conky/Scripts/vaca

y asi se vera:

4(b) .- Arte ASCII
Podemos agregar un poco de arte ascii en colores para que se vea mejor usando las variables de color del principio:

	echo -ne "$LIGHTRED" 
	echo "                           /      /    ,                    "
	echo "  ----__----)__-----__----/__----/----------__------------|/"
	echo "    /   )  /   )  /   '  /   )  /    /    /   )  /   /    | "
	echo "  _(___(__/______(___ __/___/__/____/____/___/__(___(____/|_"
	echo "                                                        /   "

echo -ne "$LIGHTRED" 

	echo "         /           /      ,              "
	echo " ----__-/-----__----/__----------__-----__-"
	echo "   /   /    /___)  /   )  /    /   )  /   )"
	echo " _(___/____(___ __(___/__/____(___(__/___/_"

o el que queramos tambien podemos agregar algunos parametros como el kernel que usamos, la fecha un calendario saludo y comentario de fortune:

echo -ne “Buenos dias hoy es “; date ‘+%A, %B %-d %Y’
uptime
echo -e “”; cal
echo -e “”; uname -r
echo -e “Tu suerte para hoy:”; fortune

5.- Utilidades:

tambien podemos usar pequeños script para que sea mas sencillo trabajar

captura de pantalla:
nos permite tomar una captura de pantalla usando argumentos como calidad y tiempo con valores predeterminados tanto en la calidad y el en tiempo tambien nos muestra una cuneta regresiva nos crea dos capturas una normal y un thumnail y los mueve a la carpeta captura y mini respectivamente un ejemplo del comando seria:

cap 75(calidad) 10(tiempo antes de tomarla)

Y agregamos esto a nuestro .bashrc(necesitamos scrot)

# comando cap, primer arg tiempo de calidad, segundo arg calidad
cap() {
        if ! which scrot &>/dev/null; then
	    echo "${FUNCNAME[0]}(): You must install 'scrot' first."
	    return 1
        fi 

	 # Valores por defecto para los argumentos
	local quality=95
 	local delay=10 

	[ "$1" ] && quality="$1"
	[ "$2" ] && delay="$2" 

	scrot -q $quality -d $delay -c -t 50% 'toma-%m-%d-%H-%M.png' -e 'mv $f ~/Imagenes/capturas/ && mv $m ~/Imagenes/mini/'
}

recordatorio

este es un pequeño recordatorio que sirve con zenity el comando seria asi

recuerdame 10m “la pizza”

y despues de diez minutos nos dira la pizza :

# recuerdame un simple recordatorio
# uso recuerdame
recuerdame()
{
      sleep $1 && zenity --info --text "$2" &
}

Extraer un archivo dado

extract () {
        if [ -f $1 ] ; then
                case $1 in
                        *.tar.bz2)      tar xjf $1              ;;
                        *.tar.gz)       tar xzf $1              ;;
                        *.bz2)          bunzip2 $1              ;;
                        *.rar)          rar x $1                ;;
                        *.gz)           gunzip $1               ;;
                        *.tar)          tar xf $1               ;;
                        *.tbz2)         tar xjf $1              ;;
                        *.tgz)          tar xzf $1              ;;
                        *.zip)          unzip $1                ;;
                        *.Z)            uncompress $1   ;;
                        *)                      echo "'$1' No se puede extraer mediante extract()" ;;
                esac
        else
                echo "'$1' No es un fichero valido"
        fi
}

Bueno esto es todo este solo es el inicio udstedes lo pueden llevar hasta donde quieran y recuerden que la terminal es su mejor amiga

Les dejo mi configuracion para que la vean :

# Check for an interactive session
[ -z "$PS1" ] && return 

###########################
# Definición de colores   #
########################################
# Fuente:                              #
# http://dotfiles.org/~jospalau/.bashrc#
#                                      #
######################################## 

BLACK="33[0;30m"
BLUE="33[0;34m"
GREEN="33[0;32m"
CYAN="33[0;36m"
RED="33[0;31m"
PURPLE="33[0;35m"
BROWN="33[0;33m"
LIGHTGRAY="33[0;37m"
DARKGRAY="33[1;30m"
LIGHTBLUE="33[1;34m"
LIGHTGREEN="33[1;32m"
LIGHTCYAN="33[1;36m"
LIGHTRED="33[1;31m"
LIGHTPURPLE="33[1;35m"
YELLOW="33[1;33m"
WHITE="33[1;37m"
BLINK_BLACK="33[5;30m"
BLINK_BLUE="33[5;34m"
BLINK_GREEN="33[5;32m"
BLINK_CYAN="33[5;36m"
BLINK_RED="33[5;31m"
BLINK_PURPLE="33[5;35m"
BLINK_BROWN="33[5;33m"
BLINK_LIGHTGRAY="33[5;1;37m"
BLINK_DARKGRAY="33[5;1;30m"
BLINK_LIGHTBLUE="33[5;1;34m"
BLINK_LIGHTGREEN="33[5;1;32m"
BLINK_LIGHTCYAN="33[5;1;36m"
BLINK_LIGHTRED="33[5;1;31m"
BLINK_LIGHTPURPLE="33[5;1;35m"
BLINK_YELLOW="33[5;33m"
BLINK_WHITE="33[5;37m"
NORMAL="33[0;0m" 

############################
# Prompt                   #
############################ 

PS1="${NORMAL}D${GREEN}=${RED}[${GREEN}\w${RED}]\n${BLUE}\u${RED}@${BLUE}\h${RED}\$\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\`${NORMAL}\n\ " 

############################
# Bienvenida               #
############################ 

echo -ne "$LIGHTRED"
echo "                         /      /    ,                    "
echo "----__----)__-----__----/__----/----------__------------|/"
echo "  /   )  /   )  /   '  /   )  /    /    /   )  /   /    | "
echo "_(___(__/______(___ __/___/__/____/____/___/__(___(____/|_"
echo "                                                      /   "
echo -ne "$PURPLE"
echo -e "\n------------------------------------------------------------------------------\n"
echo -ne "$DARKGRAY"
    mpc
echo -ne "$PURPLE"
echo -e "\n------------------------------------------------------------------------------\n" 

############################
# Alias                    #
############################ 

alias pacinstala='sudo pacman-color -Sy'
alias pacbusca='sudo pacman-color -Sys'
alias actualiza='sudo pacman-color -Syu'
alias rm='rm -i'
alias mv='mv -i'
eval "`dircolors -b`"
alias dir='dir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias yins='yaourt -Sy'
alias ls='ls --color=auto'
alias fuentes='sudo fc-cache -fv'
alias elimina='sudo pacman-color -Rsn'
alias yact='yaourt -Syu –aur'
alias captura='captura'
############################
# Funciones                #
############################ 

# recuerdame un simple recordatorio
# uso recuerdame
# Ej: recuerdame 10m "la pizza" 

recuerdame()
{
      sleep $1 && zenity --info --text "$2" &
} 

# Toma capturas de pantalla, primer arg tiempo de calidad, segundo arg calidad (ej: 70)
cap() {
        if ! which scrot &>/dev/null; then
	    echo "${FUNCNAME[0]}(): You must install 'scrot' first."
	    return 1
        fi 

	 # Valores por defecto para los argumentos
	local quality=95
 	local delay=10 

	[ "$1" ] && quality="$1"
	[ "$2" ] && delay="$2" 

	scrot -q $quality -d $delay -c -t 50% 'toma-%m-%d-%H-%M.png' -e 'mv $f ~/Imagenes/capturas/ && mv $m ~/Imagenes/mini/'
}

Fuente: Tuxnolair

Anuncios

Etiquetado:, , , , , , , ,

§ 4 respuestas a Personaliza tu bash

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

¿Qué es esto?

Actualmente estás leyendo Personaliza tu bash en El blog de Cruz.

Meta

A %d blogueros les gusta esto: