lunes, febrero 09, 2009

A shell to rule them all


Bash es una herramienta muy poderosa y el autocompletado que incluye en Ubuntu (creo desde 7.04) lo hace aún más fácil de aprender. Sin embargo, cuando comencé el proceso "pimp my bash", empecé a notar que la performance comienza a disminuir, algo que se vuelve notorio al arranque.
Muchas aplicaciones degradan su rendimiento con el toqueteo, es algo casi natural, pero muchas veces imperceptible o tolerable... pero en una herramienta tan fundamental para un usuario Linux, no va. Esperar 0.5 a 1 segundo por un shell en un procesador Core 2 Duo no va. Por lo menos para mi no.
Así que decidí dar un paseo por los otros shells. Probé ksh, csh y no no me convencieron. Tan solo ver que un golpe de tabulador desplaza ocho espacios a la derecha me dio mucha tristesa, aunque la velocidad de spawneo (perdonen el spanglish) era muy buena. Pocas horas más tarde, tcsh mejoró el panorama (si mal no recuerdo viene de BSD).
Finalmente di con zsh, que pregonaba un poderoso sistema de compleción (o se dice completado?).
Tras instalarlo, la compleción no estaba disponible pero entre la doc de gentoo y la wiki de arch, logré configurarlo. Velocidad de spawn muy buena, configuración bastante etendible, compatible con sh y hasta ahora con todos los scripts de bash que he probado... y con un autocompletado para sacarse el sombrero:
En vez de ir alternando entre las posibles opciones, las lista en las lineas inferiores al prompt, de manera de tener un pantallazo general de las opciones, pero no conforme con esto, muchos comandos tienen ayuda detallada:


Una sintaxis de for simplificada, no neceista do accion1; accion2; done:
for x in *; echo $x en vez de for x in *; do echo $x; done
Editor de historial mejorado cuando tipeamos comandos multilinea, corrige comandos cuando le pifeamos al orden de los caracteres, las instancias de zsh pueden colaborar un historial global y buscar en cada terminal (cosa que no pasaba en bash y realmente nunca comprendí muy bien cual era su filosofía con respecto a varias sesiones y un solo history) entre otras features que pueden leer en su FAQ.
Lo que les puedo recomendar es que lo prueben ustedes mismos.

No hay comentarios.: