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).
Te puede interesar:Introducción a BashAl 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
,zlogin
yzlogout
git
finalización del comando- Expansión de ruta: por ejemplo, Enter
cd /u/lo/b
, presione el tabulador y se completará paracd /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.
Te puede interesar:Phaser 3 y Tiled: construyendo un juego de plataformasHay 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 comandosudo !!
(!!
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.
Te puede interesar:Validación de forma angularLo 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.
Te puede interesar:Web Scraping con Node.jsAunque 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 ejecutadozmv –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 conautoload -Uz zcalc
y corre conzcalc
- 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 hacerpopd
después de usarcd
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:
Te puede interesar:Clasificación de imágenes con aprendizaje de transferencia y PyTorch- los
–norc
opción de línea de comandos, que permite al usuario continuar con la inicialización del shell sin leer labash.rc
archivo - Usando la opción
–rcfile <filename>
conbash
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
,ENV
oBASH_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…
- Armado o desarmado de los valores del
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.
Te puede interesar:Cómo arreglar «ADVERTENCIA: ARCHIVO DE CLAVE PRIVADA NO PROTEGIDO!» en Mac y LinuxCon 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!