Zsh contra Bash

    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 鈥嬧媎e 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 鈥揅 '(*)(#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 鈥搉orc 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 鈥搑cfile <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 鈥搊 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!

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *