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

Aprende los comandos básicos y las funciones útiles de Zsh (autocompletado, historial, globbing)

En el artículo anterior, instalamos Oh My Zsh, lo que debería haber potenciado enormemente tu entorno Zsh tanto en apariencia como en funcionalidad. Aunque la personalización con alias, temas y plugins es uno de los grandes atractivos de Zsh, en realidad, Zsh incorpora de serie un montón de funciones muy potentes y prácticas sin necesidad de recurrir a esas herramientas externas.

La razón por la que muchas personas que vienen de otros shells como Bash se enamoran de Zsh reside en la inteligencia y la atención al detalle de estas "funciones estándar". Es como tener un secretario excelente siempre a tu lado, anticipándose a tu trabajo y dándote apoyo.

En este artículo, nos centraremos en tres potentes pilares que Zsh trae de serie: la "función de autocompletado", la "función de historial" y el "Globbing (expansión de nombres de archivo)", y explicaremos su uso concreto. ¡Te prometemos que si dominas estas funciones, tu trabajo en la línea de comandos será un paso más rápido y cómodo!


1. ¡Una inteligencia a nivel de texto predictivo! La "función de autocompletado" de Zsh

Si hay una función estrella en Zsh, sin duda es esta "función de autocompletado". Con solo pulsar la tecla Tab, te ofrece un soporte sorprendentemente inteligente que va mucho más allá de la simple finalización de nombres de archivo.

Autocompletar las opciones de los comandos

Ya no necesitas consultar el manual pensando: "¿qué opciones podía usar con este comando...?". Simplemente escribe el comando seguido de - y pulsa la tecla Tab, y te mostrará una lista de las opciones disponibles.

$ ls -[Pulsar Tab]
--all                             -A --almost-all                 -B --ignore-backups
--author                          -d --directory                  -D --dired
--color                           -F --classify                   -G --no-group
...(etc.)...

Además, puedes seleccionar un candidato con las teclas de flecha e incluso te mostrará una explicación de lo que hace cada opción.


Cambiar los candidatos a autocompletar leyendo el contexto

Zsh entiende lo que el comando que estás escribiendo en ese momento necesita y cambia inteligentemente los candidatos a autocompletar.

Por ejemplo, si pulsas la tecla Tab después del comando kill, que sirve para terminar un proceso, en lugar de nombres de archivo, te mostrará una lista de los nombres de los procesos en ejecución como candidatos.

$ kill [Pulsar Tab]
101 zsh      102 login    103 top      104 sshd
...

2. La "función de historial" que llega donde más lo necesitas

La función de historial, que reutiliza los comandos ejecutados una vez, también es mucho más inteligente en Zsh que en Bash.

Búsqueda incremental en el historial

Cuando piensas: "Quiero volver a usar ese comando de git tan largo que escribí antes...", con Zsh, solo tienes que escribir la parte inicial del comando (p. ej., git) y luego pulsar la tecla ↑ (flecha arriba).

Esto te permitirá buscar hacia atrás no en todo el historial de comandos, sino solo en el historial de comandos que empiezan con git. De esta manera, podrás encontrar el comando que buscas de forma abrumadoramente más rápida.

Reejecutar un comando con `!!`

!! es un alias especial que se expande al último comando ejecutado. Esto brilla especialmente cuando te olvidas de poner sudo.

$ apt update
E: Could not open lock file ... Permission denied
$ sudo !!
sudo apt update
...

Con solo escribir sudo !!, se vuelve a ejecutar como sudo apt update. El ahorro de tiempo es enorme.


3. El maestro de la selección de archivos: "Globbing"

El "globbing" es una función que utiliza comodines como * para especificar varios archivos a la vez. En Zsh, esta función se ha ampliado enormemente y se conoce como "Globbing extendido". (Para usarlo, se necesita la configuración setopt EXTENDED_GLOB. Si usas Oh My Zsh, en muchos casos ya está activado por defecto).

Búsqueda recursiva de archivos (**)

Usando **, puedes buscar archivos en las profundidades de los subdirectorios de una sola vez.

# Listar todos los archivos .js en todos los subdirectorios
ls -l **/*.js

Búsqueda OR (|)

Usando |, puedes especificar archivos con una condición "A o B".

# Listar archivos .jpg o .png
ls *.(jpg|png)

Búsqueda NOT (^)

Usando ^, puedes especificar "todos los archivos excepto X".

# Listar todo excepto los archivos .log
ls ^*.log

Especificación de rango numérico (<->)

Es útil para especificar un rango particular de archivos con numeración secuencial.

# Listar desde image1.jpg hasta image10.jpg
ls image<1-10>.jpg

Resumen

Esta vez, hemos presentado algunas de las funciones prácticas integradas que son la razón por la que Zsh es llamado el "shell definitivo".

Aunque cada una de estas funciones pueda parecer una pequeña mejora por sí sola, al acumularse en tu trabajo diario, mejorarán enormemente tu productividad. Zsh no es solo una herramienta para ejecutar comandos, sino un "compañero" que apoya activamente tu trabajo.

Ahora, para aquellos que están empezando a pensar en migrar seriamente de Bash a Zsh, el próximo artículo explicará en detalle los puntos de compatibilidad a tener en cuenta al ejecutar scripts de Bash en Zsh, y una lista de verificación para que la transición sea fluida.

Guía de puntos de control de compatibilidad para quienes migran de Bash a Zsh