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.
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:
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.
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]
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.