Personaliza tu terminal en Linux

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

Para ello sólo tenemos que editar el siguiente fichero:

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 90 columnas y 17 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 aptitud 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 aptactualiza='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

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 " / "

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)




# Toma capturas de pantalla, primer arg tiempo de calidad, segundo arg calidad (ej: 7)

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" &
}

Define la palabra

#Fuente: dotfiles.org | community for sharing dotfiles like .bashrc, .vimrc, and .bash_profile
# define - fetch word defnition from google
# usage: define
define ()
{
lynx -dump "http://www.google.com/search?hl=en&q=define%3A+${1}&btnG=Google+Search" | grep -m 5 -w "*" | sed 's/;/ -/g' | cut -d- -f5 > /templookup.txt
if [[ -s /tmp/templookup.txt ]] ;then
until ! read response
do
echo "${response}"
done < /tmp/templookup.txt
else
echo "Sorry $USER, I can't find the term "${1} ""
fi
rm -f /tmp/templookup.txt
}

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


cruznick07

# Check for an interactive session

[ -z "$PS1" ] && return

###########################

# Definición de colores #

########################################

# Fuente: #

# dotfiles.org | community for sharing dotfiles like .bashrc, .vimrc, and .bash_profile

# #

########################################

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/'

}