🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

¿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:

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:

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.

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