viernes, 8 de febrero de 2013

Conociendo el Terminal #5: Creación de alias


El capítulo de hoy de la serie sobre el terminal se adentra un poquito más en los misterios de nuestra consola y estoy convencido de que a lo más novatos les va a hacer sentir como verdaderos hackers. En el fondo los alias son un instrumento sencillo y, sobre todo, muy cómodo, pero como todo en este mundo del pingüino, tiene sus secretos.
En el vídeo que os presento la cosa queda bastante bien explicada, o eso creo; para añadir alias nuevos sólo tenemos que editar un archivo que se encuentra en nuestra carpeta de usuario, pero oculto, el muy cabroncete: .bashrc.

Otro día os explico cómo hacer para que todo esto salga en el terminal

Voy a aprovechar este artículo para añadir algunos detalles más sobre el funcionamiento de los alias y el contenido del susodicho archivo .bashrc, aunque naturalmente las posiblidades son prácticamente infinitas.
En primer lugar, el archivo .bashrc contiene unos cuantos alias por defecto, alguno de los cuales está desactivado mediante el símbolo "#" y por lo tanto podemos activar a voluntad; por ejemplo, vamos a ver estas líneas, que he sacado de mi archivo .bashrc, y que estarán en el vuestro también si andáis por Ubuntu (los alias por defecto pueden variar de una distro a otra):
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'
Vemos que las líneas 2 y 3 de los comandos anteriores están desactivadas; este párrafo corresponde con algunos alias relacionados con los comandos ls, dir y grep. Los dos primeros ya los conocemos, sirven para examinar el árbol de directorios y archivos. Por su parte, grep es un comando que sirve para realizar búsquedas de cadenas en archivos... ya, ya sé que eso es como no decir nada, para conocer grep y otras herramientas de búsqueda de datos tendréis que esperar a otro capítulo... El caso es que todos estos comandos están ahí juntitos por que este apartado de .bashrc controla el aspecto de esos comandos, básicamente los lindos colores que vemos cuando ejecutamos la orden "ls" en el terminal. Si echáis de menos esos colores al hacer un dir, ya sabéis, borráis el signo "#", volvéis a abrir el terminal, y listo. Por cierto, que si os fijáis, cuando ejecutamos el comando "ls", lo que estamos haciendo en realidad es invocar el comando "ls --color=auto" bajo el alias "ls". Las implicaciones lógico-filosóficas de un alias que parece un comando pero que invoca a ese mismo comando las dejo para vuestras propias pajas mentales.
Otra chorrada que está incluida en este archivo es la posibilidad de darle una nota de color al "prompt" (es decir, el encabezamiento de nuestra terminal: usuario@nombredelequipo:~$):


¡Orgía de color! ¡Quién puede concentrarse con esta hemorragia de estímulos sensoriales!

 Para conseguir esto, tenemos que localizar en el archivo las siguientes líneas:
# 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
...y quitar la almohadilla de la última. Reseteamos el terminal, y ya tenemos el prompt de colores. Los muy cachondos ya nos avisan de que esto lo dejan desactivado porque lo de poner el prompt de colores sólo sirve para distraer y es propio de perroflautas u horteras. Nos han jodido, que no nos lo pongan delante...
En el archivo .bashrc hay algunas sorpresas más, pero os recomiendo que le echéis un vistazo vosotros mismos. Es una delicia meterse en estos archivos de configuración y comprobar lo bien explicado que está todo, eso sí, en inglés.
Las capacidades de creación de alias sólo tienen como límites las de la sintaxis del terminal y nuestra propia imaginación. Podemos hacer alias complejos para tareas que requieren un montón de pasos, como por ejemplo tareas recurrentes del tipo: "me meto en esta carpeta, luego en esta otra y ejecuto el programa X con permisos de superusuario". Este tipo de tareas se abrevian escandalosamente con alias, y la forma de crearlos es tan sencilla como editar una línea que una los diferentes comandos mediante el símbolo "&&".
Para terminar el artículo, me permito dejaros a continuación unas cuantas sugerencias, que podéis añadir a vuestros archivos .bashrc y probar a ver qué tal os encontráis en este nuevo mundo de atajos:
#actualiza repositorios
#y aplica actualización al sistema
alias actualizar='sudo apt-get update && sudo apt-get upgrade'
#apaga el ordenador
alias apagar='sudo shutdown -h now'
#resetea
alias reset='sudo shutdown -r now' 
#instala una aplicación 
#(hay que añadir el nombre del paquete 
#después de "instalar")
alias instalar='sudo apt-get remove'
#borra un paquete
alias borrar='sudo apt-get remove'
#examina los procesos que están en ejecución
alias procesos='ps aux'
#elimina y purga un paquete 
#(es decir, lo borra y elimina las dependencias 
#que se instalaron para hacerlo funcionar 
#y que no formaban parte del sistema con anterioridad)
alias purgar='sudo apt-get --purge remove'
#comprueba espacio en los discos
alias espacio='df -h -x tmpfs -x devpts -x usbfs' 
#ver estado de memoria ram
alias memoria='free -m'
#tienes más años que Matusalén 
#y recuerdas que hace mil años 
#usabas el MS-DOS 
#y en lugar de cd .. se escribía cd.. 
#para subir directorio
#y lo echas de menos
alias cd..='cd ..'

Si sois capaces de entender todas las líneas que acabo de escribir, enhorabuena, vais por buen camino y empezáis a entender cómo funciona nuestro querido Bash. Podéis copiar y pegar directamente el párrafo anterior en vuestro archivo, y así os ahorráis más trabajo todavía. Por supuesto, se trata sólo de una plantilla que podéis modificar a vuestro gusto: podéis cambiar el nombre del alias si no os parece adecuado el que os propongo. Ojo, si estabais pensando en renombrar el alias "borrar" por "mandar a freír espárragos", conviene saber que no se aceptan alias con varias palabras separadas por espacios, así que tendréis que utilizar los típicos guiones bajos "_" o escribir todo junto. También podéis bloquear el uso de alguno de los alias añadiendo la almohadilla al principio de la línea que más rabia os dé, o sencillamente borrándola. 
Con este regalito termino el artículo de hoy; sólo me queda agradecerle a RafaGCG la sugerencia para la elaboración de este capítulo, e invitaros a los que conozcáis más alias útiles que me los hagáis saber para completar nuestra colección.