¿Qué es Zsh? Por qué los desarrolladores lo aman y sus diferencias con Bash
En la serie hasta ahora, hemos aprendido sobre el "rey de los shells", Bash, y el as bajo la manga de Windows, PowerShell. Espero que hayas podido sentir lo potente que es el mundo de la línea de comandos y el potencial que tiene para mejorar drásticamente la eficiencia de tu trabajo. Pues bien, esta vez, como culminación, presentaremos el shell definitivo "Zsh" (Z Shell), que muchos desarrolladores aclaman diciendo que "una vez que lo usas, no puedes volver atrás".
Especialmente en macOS, Zsh ha sido adoptado como el shell estándar desde hace varios años, convirtiéndose en una presencia ineludible también para los creadores web. Responderemos a preguntas como "¿En qué se diferencia de Bash?" y "¿Por qué es tan popular?" de una manera fácil de entender, con ejemplos que te permitirán experimentar sus funciones y su manejo.
Si Bash es un sedán nacional fiable, Zsh es como un coche deportivo de lujo repleto de funciones prácticas y totalmente personalizable. ¡Cuando termines de leer este artículo, seguro que te habrás dado cuenta del encanto de Zsh y estarás deseando abrir la terminal!
¿Qué es Zsh (Z Shell)?
Zsh, al igual que Bash, es un tipo de shell de Unix. Se desarrolló con el objetivo de tomar lo bueno de Bash y añadirle y ampliarle funciones aún más potentes. Por eso, el manejo de comandos básicos (como ls, cd, rm) y el uso de tuberías (|) es prácticamente idéntico al de Bash. Puedes considerarlo sin problemas como una especie de superconjunto de Bash, donde tus conocimientos de Bash son directamente aplicables.
Entonces, ¿cuál es la razón por la que Zsh goza de un apoyo tan abrumador por parte de los desarrolladores? El secreto reside principalmente en estas tres características:
- Potente función de autocompletado: Reduce los errores de escritura de comandos y aumenta la velocidad de forma espectacular.
- Funciones prácticas e ingeniosas: Está repleto de funciones que te solucionan la vida, como atajos para cambiar de directorio.
- Amplia personalización: Usando frameworks como "Oh My Zsh", puedes ampliar su apariencia y funcionalidad hasta el infinito según tus gustos.
En lugar de explicarlo con palabras, lo mejor es experimentar la diferencia por uno mismo. En la siguiente sección, veremos las increíbles funciones de Zsh.
¡Siente el encanto de Zsh! Funciones prácticas que marcan la diferencia con Bash
Aquí presentaremos algunas de las funciones más prácticas y fáciles de experimentar de Zsh. ¡No dudes en probarlas en tu terminal (en un entorno de macOS o Linux con Zsh instalado)!
1. La función de autocompletado "demasiado inteligente"
Escribir parte de un comando o nombre de archivo y pulsar la tecla Tab para que complete el resto es una función que también tiene Bash. Sin embargo, la función de autocompletado de Zsh va mucho más allá.
Por ejemplo, si te has olvidado de las opciones del comando git. Prueba a escribir git checkout - y luego pulsa la tecla Tab.
$ git checkout -[Pulsar la tecla Tab]
Entonces, aparecerá una lista de las opciones disponibles con su descripción, y podrás seleccionarlas con las teclas de flecha. Ya no necesitas consultar el manual.
El cambio de directorio también se vuelve más inteligente. Por ejemplo, si quieres moverte a un directorio en un nivel muy profundo, puedes completar la ruta simplemente escribiendo la primera letra de cada nivel.
$ cd /u/l/b[Pulsar la tecla Tab]
# Se autocompleta de la siguiente manera
$ cd /usr/local/bin/
2. Cambio de directorio sin necesidad del comando `cd`
En Zsh, si activas una opción (setopt AUTO_CD), puedes moverte de directorio simplemente escribiendo su nombre, como si hubieras escrito el comando cd.
$ ../../
# Se mueve dos niveles de directorio hacia arriba
3. Búsqueda de archivos avanzada (Globbing)
El "globbing" es la expansión de nombres de archivo usando comodines (como *). En Zsh, esto es extremadamente potente.
Por ejemplo, si quieres buscar todos los archivos con la extensión .html en todos los subdirectorios del directorio actual, puedes escribirlo así:
$ ls **/*.html
El ** significa una búsqueda recursiva. Hacer esto en Bash requiere una configuración adicional y es un poco más engorroso.
El framework que convierte a Zsh en el rey: "Oh My Zsh"
Lo que saca el máximo potencial de Zsh son los "frameworks" como Oh My Zsh. Se trata de un sistema que facilita la gestión de configuraciones útiles, plugins y temas para Zsh.
Al instalar el especialmente famoso Oh My Zsh, obtendrás inmediatamente beneficios como los siguientes:
- Alias prácticos: Por ejemplo, operaciones comunes de Git como
git statusse pueden ejecutar congst, ygit pushcongp. - Integración mejorada con Git: El nombre de la rama de Git actual y el estado de los cambios se muestran constantemente en el prompt (la línea de entrada de comandos), lo que ayuda a evitar errores.
- Temas abundantes: Puedes cambiar la apariencia de tu prompt en un instante, eligiendo entre cientos de diseños.
Intentar hacer todas estas configuraciones por tu cuenta sería una tarea enorme, pero con Oh My Zsh, puedes hacer tuyas en cuestión de minutos las configuraciones prácticas creadas por desarrolladores de todo el mundo.
Compatibilidad con Bash y precauciones al escribir scripts
Como hemos visto, para un uso interactivo, Zsh puede usarse casi como un superconjunto de Bash. Sin embargo, al escribir scripts de shell, hay una diferencia importante que se debe tener en cuenta.
Se trata del número de inicio del índice de los arrays.
En el caso de Bash (los índices empiezan en 0):
#!/bin/bash
my_array=("apple" "banana" "cherry")
echo ${my_array[0]} # -> apple
En el caso de Zsh (los índices empiezan en 1):
#!/bin/zsh
my_array=("apple" "banana" "cherry")
echo $my_array[1] # -> apple
Esta diferencia puede causar errores inesperados, por ejemplo, al ejecutar un script escrito para Bash en Zsh. Es importante escribir correctamente el shebang (#!/bin/bash, etc.) en la primera línea del script para dejar claro para qué shell se espera que se ejecute.
Resumen
En esta ocasión, hemos explicado el encanto del shell "Zsh", que se ha convertido en el estándar de macOS y es adorado por muchos desarrolladores.
- Puedes aprovechar tus conocimientos de Bash y, al mismo tiempo, usar funciones aún más prácticas.
- La potente función de autocompletado reduce la cantidad de tecleo y previene errores.
- Con frameworks como Oh My Zsh, puedes personalizar libremente tanto la apariencia como la funcionalidad.
Zsh es una herramienta muy potente que transforma el trabajo diario en la línea de comandos de una "tarea aburrida" a una "experiencia cómoda y creativa". Como creador web, en un momento en que no se pueden evitar herramientas como la operación de servidores y Git, dominar Zsh es una gran ventaja.
Para ti, que ahora piensas "¡quiero instalar Zsh en mi propio entorno!", el próximo artículo explicará los pasos concretos para instalar Zsh y Oh My Zsh en macOS y Linux y realizar la configuración inicial. ¡No te lo pierdas!
Cómo instalar Zsh (macOS / Linux) y guía de configuración inicial