GNU/Linux >> Tutoriales Linux >  >> Linux

Comenzando con Zsh

Z-shell (o Zsh) es un shell POSIX interactivo similar a Bourne conocido por su abundancia de características innovadoras. Los usuarios de Z-Shell a menudo mencionan sus muchas ventajas y le atribuyen una mayor eficiencia y una amplia personalización.

Si es relativamente nuevo en Linux o Unix pero tiene la experiencia suficiente para abrir una terminal y ejecutar algunos comandos, probablemente haya usado el shell Bash. Podría decirse que Bash es el shell de software gratuito definitivo, en parte debido a sus características progresivas y en parte porque se envía como el shell predeterminado en la mayoría de los sistemas operativos Linux y Unix más populares. Sin embargo, cuanto más usa un shell, más comienza a encontrar pequeñas cosas que podrían ser mejores para la forma en que desea usarlo. Si hay algo por lo que el código abierto es famoso, es por elección . Muchas personas optan por "graduarse" de Bash a Z.

¿Qué es Zsh?

Un shell es solo una interfaz para su sistema operativo. Un shell interactivo le permite escribir comandos a través de lo que se llama entrada estándar o entrada estándar y obtener salida a través de salida estándar y error estándar o salida estándar y stderr . Hay muchos shells, incluidos Bash, Csh, Ksh, Tcsh, Dash y Zsh. Cada uno tiene características basadas en lo que sus programadores pensaron que sería lo mejor para un shell. Que esas características sean buenas o malas depende de usted, el usuario final.

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

Zsh tiene características como finalización de tabulación interactiva, búsqueda automática de archivos, integración de expresiones regulares, taquigrafía avanzada para definir el alcance del comando y un motor de temas enriquecido. Estas funciones se incluyen en un entorno de shell similar a Bourne, lo que significa que si ya conoce y ama a Bash, encontrará que Zsh le resulta familiar, excepto que tiene más funciones. Podría pensar en ello como una especie de Bash++.

Instalando Zsh

Instale Zsh con su administrador de paquetes.

En Fedora, RHEL y CentOS:

$ sudo dnf install zsh

En Ubuntu y Debian:

$ sudo apt install zsh

En MacOS, puede instalarlo usando MacPorts:

$ sudo port install zsh

O con Homebrew:

$ brew install zsh

Es posible ejecutar Zsh en Windows, pero solo sobre una capa de Linux o similar a Linux, como Windows Subsystem for Linux (WSL) o Cygwin. Esa instalación está fuera del alcance de este artículo, así que consulte la documentación de Microsoft.

Configuración de Zsh

Zsh no es un emulador de terminal; es un shell que se ejecuta dentro de un emulador de terminal. Entonces, para iniciar Zsh, primero debe iniciar una ventana de terminal como GNOME Terminal, Konsole, Terminal, iTerm2, rxvt u otra terminal de su preferencia. Luego puede iniciar Zsh escribiendo:

$ zsh

La primera vez que inicia Zsh, se le pide que elija algunas opciones de configuración. Todo esto se puede cambiar más adelante, así que presione 1 para continuar.

This is the Z Shell configuration function for new users, zsh-newuser-install.

(q)  Quit and do nothing.

(0)  Exit, creating the file ~/.zshrc

(1)  Continue to the main menu.

Hay cuatro categorías de preferencias, así que empiece por la parte superior.

  1. La primera categoría le permite elegir cuántos comandos se retienen en su archivo de historial de shell. De forma predeterminada, está configurado en 1000 líneas.
  2. La finalización de Zsh es una de sus características más emocionantes. Para mantener las cosas simples, considere activarlo con sus opciones predeterminadas hasta que se acostumbre a cómo funciona. Presiona 1 para las opciones predeterminadas, 2 para configurar las opciones manualmente.
  3. Elija combinaciones de teclas Emacs o Vi. Bash usa enlaces de Emacs, por lo que es posible que ya esté acostumbrado.
  4. Finalmente, puede conocer (y activar o desactivar) algunas de las características sutiles de Zsh. Por ejemplo, puede dejar de usar el cd comando al permitir que Zsh inicie un cambio de directorio cuando proporciona una ruta no ejecutable sin comando. Para activar una de estas opciones adicionales, escriba el número de opción e ingrese s para establecer eso. Intente activar todas las opciones para obtener la experiencia Zsh completa. Puede desactivarlos más tarde editando ~/.zshrc .

Para completar la configuración, presione 0 .

Usando Zsh

Al principio, Zsh se parece mucho a usar Bash, que es sin lugar a dudas una de sus muchas funciones. Existen serias diferencias entre, por ejemplo, Bash y Tcsh, por lo que poder cambiar entre Bash y Zsh es una conveniencia que hace que Zsh sea fácil de probar y fácil de usar en casa si tiene que usar Bash en el trabajo o en su servidor.

Cambiar directorio con Zsh

Son las pequeñas diferencias las que hacen que Zsh sea agradable. Primero, intente cambiar el directorio a su carpeta Documentos sin el cd comando . Parece demasiado bueno para ser verdad; pero si ingresa una ruta de directorio sin más instrucciones, Zsh cambia a ese directorio:

% Documents
% pwd
/home/seth/Documents

Eso genera un error en Bash o cualquier otro shell normal. Pero Zsh está lejos de ser normal, y esto es solo el comienzo.

Buscar con Zsh

Cuando desea encontrar un archivo usando un shell normal, probablemente recurra a buscar o localizar dominio. Como mínimo, es posible que haya utilizado ls -R para una lista recursiva de un conjunto de directorios. Zsh tiene una función integrada que le permite encontrar un archivo en el subdirectorio actual o en cualquier otro subdirectorio.

Por ejemplo, suponga que tiene dos archivos llamados foo.txt . Uno está ubicado en su directorio actual y el otro está en un subdirectorio llamado foo . En un shell Bash, puede listar el archivo en el directorio actual con:

$ ls
foo.txt

y puede enumerar el otro indicando explícitamente la ruta del subdirectorio:

$ ls foo
foo.txt

Para enumerar ambos, debe usar -R switch, quizás combinado con grep :

$ ls -R | grep foo.txt
foo.txt
foo.txt

Pero en Zsh, puedes usar el ** taquigrafía:

% ls **/foo.txt
foo.txt
foo.txt

Y puede usar esta sintaxis con cualquier comando, no solo con ls . Imagine su mayor eficiencia al mover tipos de archivos específicos de una colección de directorios a una sola ubicación, o al concatenar fragmentos de texto en un archivo, o al buscar registros.

Usando la finalización de Zsh Tab

La finalización de pestañas es una función de usuario avanzado en Bash y algunos otros shells, y tomó por asalto el mundo de Unix cuando se convirtió en algo común. Los usuarios de Unix ya no tenían que recurrir a comodines al escribir rutas largas y tediosas (como /h*/s*h/V*/SCS/sc*/comp*/t*/a*/*9/ 04/LS*barco*v , que es mucho más fácil que escribir /home/seth/Videos/SCS/scenes/composite/takes/approved/109/04/LS_boat-port-cargo-mover.mkv ). En cambio, podrían simplemente presionar la tecla Tab cuando ingresaron suficiente de una cadena única. Por ejemplo, si sabe que solo hay un directorio que comienza con h en el nivel raíz de su sistema, puede escribir /h y luego presiona Tabulador. Es rápido, es simple, es eficiente. También confirma que existe una ruta; si Tab no completa nada, sabrá que está buscando en el lugar equivocado o que escribió mal parte de la ruta.

Sin embargo, si tiene muchos directorios que comparten cinco o más de las mismas primeras letras, Tab se niega rotundamente a completar. Mientras que en la mayoría de los terminales modernos (al menos) revelará los archivos que le impiden adivinar lo que quiere decir, por lo general se necesitan dos pulsaciones de Tabulador para revelarlos; por lo tanto, completar tabulaciones a menudo se convierte en una interacción de letras y tabulaciones en el teclado que te hace sentir como si estuvieras entrenando para un recital de piano.

Zsh resuelve esta pequeña molestia ciclando entre posibles finalizaciones. Si escribe ls ~/D y presiona Tabulador, Zsh completa tu comando con Documentos primero; si vuelve a pulsar Tabulador, ofrece Descargas , y así sucesivamente hasta que encuentre el que desea.

Comodines en Zsh

Los comodines se comportan de manera diferente en Zsh a lo que están acostumbrados los usuarios de Bash. En primer lugar, se pueden modificar. Por ejemplo, si desea enumerar todas las carpetas en su directorio actual, puede usar un comodín modificado:

% ls
dir0   dir1   dir2   file0   file1
% ls *(/)
dir0   dir1   dir2

En este ejemplo, el (/) califica los resultados del comodín para que Zsh muestre solo directorios. Para listar solo los archivos, use (.) . Para listar enlaces simbólicos, use (@) . Para listar archivos ejecutables, use (*) .

% ls ~/bin/*(*)
fop  exify  tt

Zsh no conoce solo los tipos de archivos. También puede enumerar según el tiempo de modificación, utilizando la misma convención de modificadores de comodines. Por ejemplo, si desea encontrar un archivo que se modificó en las últimas ocho horas, use el mh modificador (para modificado y horas ) y el entero negativo de las horas:

% ls ~/Documents/*(mh-8)
cal.org   game.org   home.org

Para encontrar un archivo modificado hace más de (por ejemplo) dos días, los modificadores cambian a md (para modificado y día ) con un entero positivo:

% ls ~/Documents/*(+2)
holiday.org

Hay muchas más cosas que puede hacer con los modificadores y calificadores comodín, así que lea la página de manual de Zsh para obtener todos los detalles.

El efecto secundario del comodín

Para usar comodines de la forma en que los usaría en Bash, a veces deben escaparse en Zsh. Por ejemplo, si está copiando algunos archivos a su servidor en Bash, puede usar un comodín como este:

$ scp IMG_*.JPG [email protected]:~/www/ph*/*19/09/14

Eso funciona en Bash, pero Zsh devuelve un error porque intenta expandir las variables en el lado remoto antes de emitir el scp dominio. Para evitar esto, debe escapar de las variables remotas:

% scp IMG_*.JPG [email protected]:~/www/ph\*/\*19/09/14

Son estos tipos de pequeñas excepciones las que pueden frustrarlo cuando cambia a un nuevo shell. No hay muchos al usar Zsh (probablemente haya más al volver a Bash después de experimentar Zsh), pero cuando sucedan, mantenga la calma y sea explícito. Rara vez se equivocará al adherirse estrictamente a POSIX, pero si eso falla, busque el problema para resolverlo y siga adelante. Hyperpolyglot.org ha demostrado ser invaluable para muchos usuarios atrapados en un shell en el trabajo y otro en casa.

En mi próximo artículo de Zsh, le mostraré cómo instalar temas y complementos para hacer que su Z-Shell sea aún más Z-ier.


Linux
  1. Comenzando con ls

  2. Primeros pasos con Samba para la interoperabilidad

  3. Primeros pasos con PostgreSQL en Linux

  4. Primeros pasos con SSH en Linux

  5. Cómo:Introducción a Ansible

Primeros pasos con GitHub

Primeros pasos con el administrador de paquetes de Nix

Primeros pasos con systemctl

Primeros pasos con cPanel

Primeros pasos con SiteApps

Primeros pasos con el comando Tar