Zsh contra Bash

Z

Cuando hablamos de programación basada en UNIX, generalmente se trata de shells, terminales e interfaces de línea de comandos. El caparazón más frecuente en este sentido es Intento pero hay otras variantes disponibles y también ampliamente utilizadas, como Zsh o el Cáscara Z.

En este artículo, intentaremos trazar la línea entre los dos caparazones y mostrar las diferencias para que pueda tener una idea de por qué podría usar uno u otro. Pero primero, en las siguientes secciones presentaremos ambos shells antes de compararlos.

Shell Z

Zsh, o Z shell, fue lanzado por primera vez por Paul Falstad en 1990 cuando todavía era estudiante en la Universidad de Princeton. El shell Z está incluido en muchos sistemas operativos, incluido Mac OS (aunque no es el predeterminado que se usa realmente).

Al igual que Bash, el shell Z se puede ver básicamente como una versión extendida del Cáscara de Bourne, y contiene muchas de las mismas características que Bash, que probablemente notará en las secciones siguientes. También puede notar que se parece bastante al caparazón de Korn. Algunas de las características que vale la pena mencionar incluyen (pero no se limitan a):

  • Archivo globbing
  • Corrección ortográfica
  • Alias ​​de directorio (muy parecido a ~ o ..)
  • Módulos cargables, como controles de socket o un cliente FTP
  • Modos de compatibilidad: por ejemplo, puede utilizar /bin/bash como reemplazo directo de Bash
  • Scripts de inicio / apagado a través de zshenv, zprofile, zshrc, zloginy zlogout
  • git finalización del comando
  • Expansión de ruta: por ejemplo, Enter cd /u/lo/b, presione el tabulador y se completará para cd /usr/local/bin ya que es el único patrón coincidente

Hay muchas más funciones de las que hemos mostrado aquí, pero al menos esto le da una idea de cómo los shells pueden ser diferentes.

Intento

El shell Bash (también conocido como el “shell Bourne-again”) también se lanzó en el mismo período que el shell Z (en 1989) y Brian Fox es considerado el creador detrás de él. Inicialmente se escribió como un reemplazo del shell Bourne. Durante muchos años se ha enviado como el shell predeterminado para GNU, la mayoría de las distribuciones de Linux y Mac OS X (versión 10.3+). Como debería ser un verdadero reemplazo, Bash es capaz de ejecutar todos los comandos del shell Bourne sin problemas.

Hay bastantes características que tiene el shell Bash y algunas de las menos conocidas incluyen:

  • Inserte los últimos parámetros del comando anterior en su comando actual usando Alt + .
  • Puede mantener un proceso en ejecución incluso después de cerrar la sesión. Para hacerlo, use el comando disown -h <pid> donde tendrá que colocar el ID de proceso (PID) del programa en lugar de <pid>
  • Ejecute el comando anterior de nuevo, pero esta vez con sudo usando el comando sudo !! (!! es la abreviatura de ‘el comando anterior’)
  • Realice una búsqueda incremental inversa usando el Ctrl + R llaves
  • Presione el tabulador dos veces y verá la lista de terminaciones de la palabra que acaba de escribir o está escribiendo
  • Al ejecutar un script con bash, utilizar el -x opción para generar el contenido del script a medida que se ejecuta

Si desea obtener más información, puede ver una lista mucho más amplia de funciones específicas de Bash Aquí.

Comparando Z shell y Bash

Ahora que le hemos dado una breve introducción a ambos caparazones, veamos cómo se mantienen cuando se comparan y contrastan juntos.

Lo primero que hay que tener en cuenta (y uno de los aspectos más importantes, en mi opinión) es la prevalencia y la popularidad del caparazón. Si bien el shell Z tiene una buena cantidad de usuarios en toda la comunidad de desarrolladores, generalmente es más seguro escribir sus scripts para Bash, ya que hay un grupo mucho más grande de personas que podrán ejecutar esos scripts.

La importancia de la adopción también es válida para los recursos públicos y la documentación. Gracias a su gran comunidad, Bash tiene bastantes recursos más para ayudarlo a aprender a usarlo.

Entonces, si está planeando escribir un script que desea que muchos desarrolladores puedan ejecutar fácilmente, le recomiendo que elija Bash. Sin embargo, esto no debería impedirle usar el shell Z si su objetivo final es más adecuado para el shell Z. Encontrar la solución correcta a un problema es mucho más importante que simplemente usar lo que es popular, así que tenlo en cuenta también.

Aunque Bash es mucho más popular, eso no significa que Z shell no tenga características útiles propias. En realidad, es muy elogiado por su uso interactivo, porque es más personalizable que Bash. Por ejemplo, las indicaciones son más flexibles. Puede mostrar un mensaje a la izquierda y otro a la derecha de la pantalla, al igual que la pantalla dividida de vim. La finalización automática también es más personalizable y en realidad es más rápida que la de Bash.

Para darle una mejor idea de qué tipo de características tiene Z shell, aquí hay una lista de cosas a las que tendrá acceso cuando use Z shell sobre Bash:

  • El incorporado zmv El comando puede ayudarlo a hacer cambios masivos de archivos / directorios. por ejemplo, para agregar ‘.txt’ a cada nombre de archivo ejecutado zmv –C '(*)(#q.)' '$1.txt'
  • los zcalc utility es una gran calculadora de línea de comandos que es una forma conveniente de hacer un cálculo rápido sin salir de la terminal. Cárgalo con autoload -Uz zcalc y corre con zcalc
  • los zparseopts El comando es una línea que le permite analizar opciones complejas que se proporcionan a su secuencia de comandos
  • los autopushd el comando te ayuda a hacer popd después de usar cd para volver a su directorio anterior
  • Soporte de punto flotante (que Bash sorprendentemente no tiene)
  • Soporte para estructuras de datos hash

También hay un montón de características que están presentes en el terminal Bash pero que están ausentes en casi todos los demás shells. Éstos son algunos de ellos también:

  • los –norc opción de línea de comandos, que permite al usuario continuar con la inicialización del shell sin leer la bash.rc archivo
  • Usando la opción –rcfile <filename> con bash le permite ejecutar comandos desde el archivo especificado
  • Excelente características de invocación
  • Puede invocarse con el sh mando
  • Bash se puede ejecutar en un modo POSIX específico. Utilizar set –o posix para invocar el modo o --posix en el inicio
  • Puede controlar el aspecto del mensaje en Bash. Establecer el PROMPT_COMMAND variable a uno o más de los caracteres especiales lo personalizará para ti
  • Bash también se puede invocar como caparazón restringido (con rbash o --restricted), lo que significa que ciertos comandos / acciones ya no están permitidos, como:
    • Armado o desarmado de los valores del SHELL, PATH, ENVo BASH_ENV variables
    • Redirigir la salida usando los operadores de redirección ‘>’, ‘> |’, ‘<>’, ‘> &’, ‘&>’ y ‘>>’
    • Analizar el valor de SHELLOPTS del entorno de shell al inicio
    • Usando el exec incorporado para reemplazar el shell con otro comando.
    • Y muchos más…

Es difícil decir qué caparazón es realmente mejor. Realmente todo depende de sus propias preferencias y de lo que realmente quiera hacer con el shell. En el caso de Bash vs Z shell, ninguno es realmente mejor que el otro.

Hay bastantes fanáticos del shell Z en toda la comunidad de desarrolladores que lo defienden en gran medida gracias a las muchas características útiles que proporciona. Por otro lado, hay aún más fanáticos de Bash que saben que su mayor ventaja es su base de usuarios mucho más grande. Es fácil ver por qué es tan difícil lograr que los desarrolladores cambien de shell Z a Bash y viceversa.

Aprende más

Entonces, ¿a dónde vas desde aquí? Hay muchos detalles que dominar al aprender a escribir scripts de shell. Si desea obtener más información, le sugiero que tome un curso como el Curso de programación BASH: Domina la línea de comandos de Linux, que le enseñará casi todo lo que necesita saber sobre secuencias de comandos (específicamente en Bash), comenzando con conceptos para principiantes y avanzando hasta temas avanzados.

Con suerte, ahora tienes una idea de cómo se diferencian tanto Bash como el shell Z, así como sus similitudes. Existen bastantes recursos para ambos shells, por lo que no tendrá problemas para encontrar más información si la necesita.

¿Qué caparazón prefieres y por qué? ¡Infórmenos en la sección para comentarios!

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad