Después de Bash y Korn, hoy vamos a descubrir el muy popular shell Zsh. De hecho, Zsh es tan popular que mucha gente ha dejado Bash por él. La razón principal detrás de su popularidad se debe a una increíble interactividad con el usuario, y una funcionalidad de autocompletado muy completa y potente.

Historia

La primera versión de Zsh fue creada en 1990 por un estudiante de Princeton llamado Paul Falstad. El nombre “Zsh” supuestamente viene del ID de conexión del profesor de Princeton Zhong Shao. El shell en sí mismo fue influenciado por Bash, Ksh, y Tcsh: Zsh tiene una funcionalidad de autocompletado muy potente, junto con búsquedas recursivas y un corrector incluido. Y, por supuesto, el prompt se puede definir según el deseo del usuario. Por todo ello, algunos consideran a Zsh como un Bourne Shell extendido.

Instalación

Ahora que sabes más sobre Zsh, vamos a instalarlo. Para Ubuntu, la instalación es bastante sencilla:

sudoapt-get installzsh

Para otras distribuciones, también debería estar disponible en sus repositorios. En el peor de los casos, descarga el paquete desde la página oficial.

Una vez instalado el paquete, puedes lanzar un Zsh Shell desde cualquier terminal a través del comando

zsh

Si realmente te gusta esta shell y quieres que sustituya a la actual, puedes hacerlo escribiendo

sudo usermod -s/bin/zsh[nombre de usuario]

Observe que, como siempre, el archivo de configuración está en “~/.zshrc” y se creará en el primer lanzamiento. Al igual que bash, esto puede ser usado para añadir alias y personalizar el prompt.

Uso

Zsh es muy intuitivo. Al principio, no deberías notar ninguna diferencia en el comportamiento con Bash. Sin embargo, una buena manera de detectar la primera característica es escribir

rm – [tecla de tabulación]

y luego utilizar la tecla de tabulación. Esto mostrará todos los argumentos posibles para el comando “rm”. Como puedes ver, el autocompletado es increíble con Zsh.

zsh-rm_completion

No sólo los argumentos de un comando, sino también los hosts ssh presentes en /etc/hosts, los posibles objetivos para el comando “make”, las páginas del manual, los archivos en un servidor distante, etc, todo puede ser auto-completado por Zsh. Y la velocidad de autocompletado es también impresionante.

También puedes intentar escribir un comando erróneo como

gdit .zshrc

y se activará la función de corrección:

zsh-corrección

Si la corrección no funciona a la primera, significa que aún no la has activado. Para hacerlo, simplemente escriba

setopt corregir

La corrección no es la única opción que puedes activar. Después del comando “setopt”, también puede utilizar

  • beep: para reproducir un pitido cuando se produce un error
  • hist_ignore_all_dups: para evitar que el mismo comando se registre dos veces en el historial
  • auto_cd: para moverse a un directorio con sólo escribir su nombre (ya no es necesario el comando cd)

Por el contrario, si quieres eliminar una opción, la sintaxis es

unsetopt [opción]

Otro buen uso de Zsh es la búsqueda recursiva. Estabas acostumbrado con Bash al operador “*” que significa “todo”. Ahora con Zsh, “**” puede traducirse como “todo dentro de todo”. En otras palabras, búsqueda recursiva. Permíteme ilustrar con un ejemplo. Si quieres borrar un archivo llamado “foobar” pero no recuerdas dónde está, esta línea te resultará muy útil:

rm **/foobar

Zsh buscará el archivo foobar dentro del directorio actual, y en cada subdirectorio, hasta que lo elimine.

zsh-recursive_search

El operador recursivo puede llegar a ser realmente útil cuando se busca un tipo de archivo en particular. Es posible utilizar la combinación del comando “ls” y una regex. Un comando simple como

ls **/*.mp3

devolverá todos los archivos mp3 que Zsh puede encontrar recursivamente desde el directorio actual.

Finalmente, hablemos un poco de la configuración de Zsh. Como ya sabes, ocurre en ~/.zshrc. Si quieres probar algunos avisos personalizados, Zsh viene con algunos temas guardados.

Para ver cuál está disponible, carga el sistema prompt con

autoload -U promptinitpromptinit

Y luego listar los temas con

prompt -l

Y para cambiar el prompt actual, escribe

prompt [nombre del tema]

zsh-prompt

Si has creado muchos alias en bash, no funcionarán en zsh. Tienes que portarlos al archivo ~/.zsh. La sintaxis básica es la misma que la de Bash:

alias [nombre del alias]=”[comando]”

Además, también puedes definir un alias específico para la extensión del archivo. Esto le permite lanzar automáticamente el comando apropiado para el archivo que desee. Por ejemplo, yo uso el programa “mpg123” para reproducir mp3 desde la línea de comandos. Por lo tanto, puedo añadir a mi .zshrc

alias -s mp3=”mpg123″

A partir de ahí, cada vez que escribo algo como

./canción.mp3

Mpg123 se lanzará y reproducirá la canción. Con un poco de imaginación, podemos combinar esta funcionalidad con mi artículo anterior sobre el manejo de archivos desde la línea de comandos:

alias -s tar=”tar -xvf “alias -s rar=”unrar x “alias -s zip=”unzip “alias -s pdf=”evince”

Conclusión

Sí, Zsh y Bash son muy similares, pero zsh es más flexible y eso lo hace más popular. Personalmente, aprecio mucho la función de autocompletado y el alias para la extensión de archivos. Los consejos mencionados anteriormente cubren sólo una pequeña parte de lo que zsh puede hacer. Para encontrar más sobre Zsh, te invito a leer el wiki de Archlinux.