GNU/Linux >> Tutoriales Linux >  >> Linux

Qué terminal es mejor:Bash vs Zsh

Comúnmente, cuando hablamos de servidores Linux o contenedores Docker, generalmente nos referimos a una interfaz de línea de comandos, shell o experiencia de terminal. Hay dos shells ampliamente utilizados por la comunidad:Bash y Zsh. El Bash se considera el caparazón más utilizado. Al mismo tiempo, Z shell o Zsh se vuelve cada vez más popular en la actualidad. Entonces, ¿qué terminal deberías elegir? En este artículo, compararemos Bash vs Zsh e intentaremos responder a la pregunta de qué terminal es mejor.

Historia

Bash shell (Bourne Again Shell) se introdujo en 1989 para reemplazar a Bourne Shell y se convirtió rápidamente en el shell predeterminado de Linux. Bash es capaz de realizar una amplia gama de soluciones de programación y tareas automatizadas en Linux, pero ese no es el único shell que puede usar. Hay varios otros shells que pueden realizar funciones similares a Bash.

Uno de ellos es Zsh, que se creó en 1990 como un shell Bourne ampliado con muchas características adicionales de Bash, ksh y tcsh. Si eres usuario de Linux, no tienes que instalar Zsh por separado ya que viene incluido por defecto en casi todas las distribuciones modernas. Bash y Zsh comparten algunas características, pero también hay muchas diferencias entre estos shells, que describiremos en este artículo. Este artículo cubre las siguientes secciones:

  • Tabla de comparación de características
  • Comparación de UX de terminal
  • Lista de diferencias entre Bash y Zsh

Ahora vayamos a la primera sección de este artículo.

Comparación de funciones

En esta parte cubriremos las diferencias más importantes.

Bash vs Zsh:volumen de búsqueda en Internet

Aquí hay un gráfico de Google Tends, que muestra la comparación del volumen de búsqueda para ambos shells:

Bash vs Zsh – UX

En esta sección, revisaremos las funciones de shell de UX más utilizadas, que usa a diario.

Configuración del contenedor Docker

Si solo desea probar los siguientes ejemplos, la mejor manera de hacerlo es iniciar el contenedor Docker de Ubuntu:

docker run -it ubuntu:20.04 /bin/bash

El contenedor Docker no tiene Zsh instalado de forma predeterminada, por lo que debe instalarlo primero:

apt-get update
apt-get install -y zsh

Finalmente, puede ejecutar zsh shell:

zsh

Pestaña para autocompletar

La pestaña Tab el uso de claves en Zsh y Bash es un poco diferente. Vamos a crear un par de directorios anidados para ilustrar este ejemplo:

mkdir -p onedrive/docs
mkdir -p onedrive/pics

En Bash, tienes que usar Tab tecla para completar automáticamente la ruta al directorio o archivo.

Por ejemplo, escriba uno , luego presione Tab , el tipo d y presiona Tab de nuevo para finalizar la ruta en la terminal:

cd onedrive/docs

El resultado esperado debería verse así:

En Zsh, uso de la Tab le proporcionará la lista de opciones disponibles para seleccionar.

Escriba uno y presiona Tab , luego presione Tab de nuevo tantas veces como desee para seleccionar el directorio requerido:

Corrección ortográfica

La funcionalidad de corrección ortográfica es compatible con los shells Zsh y Bash. Sin embargo, Zsh lo hace de manera más efectiva.

En el siguiente ejemplo, aprenderá cómo habilitar Zsh y Bash para corregir la ortografía automáticamente.

Vamos a crear un directorio llamado onedrive , si no lo hizo en la parte anterior del artículo:

mkdir -p onedrive

Ahora hagamos un error tipográfico en el comando de shell Bash:

cd onedrave

Bash shell no corregirá el error de tipeo de “dra ve” a “dri ve” y muestra el error “No existe tal archivo o directorio.

Para habilitar la función de revisión ortográfica automática en bash, debe editar la configuración de Bash.

nano ~/.bashrc

Agregue la siguiente línea al final del archivo:

shopt -s cdspell

Usa la source comando para aplicar cambios al shell.

source ~/.bashrc

Vuelva a ejecutar el comando mal escrito. El terminal Bash corrigió automáticamente el error tipográfico:

cd onedrave

¿Qué pasa con Zsh?

Escribamos mal el comando "echo" para verificar si Zsh lo detecta y lo corrige automáticamente:

ehco "Hello World"

Como era de esperar, Zsh no corrigió la ortografía.

Ahora, haremos algunos cambios en la configuración de Zsh.

nano ~/.zshrc

Activa la correctexport opción para el caparazón. También puede especificar un mensaje de aviso:

setopt correct
export SPROMPT="Correct %R to %r? [Yes, No, Abort, Edit ]"

No se preocupe si el archivo está vacío, está bien, se completará con una configuración adicional tan pronto como instalemos Oh My Zsh más tarde.

Así es como debería verse si nos sigue en el contenedor Docker:

Ejecuta el source comando para aplicar cambios al shell.

source ~/.zshrc

Ejecute el echo mal escrito comando de nuevo:

ehco "Hello World"

¡Aquí tienes!

El corrector ortográfico automático ahora está habilitado:

Temas

Debe instalar Git para poder usar cualquier tema y personalización de Bash o Zsh:

apt-get install -y git

Para instalar personalizaciones para el shell Bash, use el siguiente comando:

git clone --depth=1 https://github.com/Bash-it/bash-it.git ~/.bash_it

El proceso de instalación es muy simple:

~/.bash_it/install.sh

Ahora podemos editar ~/.bashrc archivo para editar el tema de Bash:

nano ~/.bashrc

Cambiar BASH_IT_THEME valor variable a cualquier tema que exista en el paquete de temas, por ejemplo, pruebe envy .

Para aplicar los cambios, ejecute el siguiente comando:

source ~/.bashrc

Ahora, personalicemos Zsh.

Como se mencionó anteriormente, el marco Oh My Zsh ofrece muchas funciones útiles y una amplia colección de temas.

La instalación de Oh My Zsh tampoco es muy difícil:

apt install -y curl wget git
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Solo responde S a todas las preguntas y obtendrá una hermosa personalización de shell por defecto:

Ahora, los temas de Zsh se encuentran en:~/.oh-my-zsh/themes carpeta:

ls ~/.oh-my-zsh/themes/

Aquí puede ver los nombres de los temas incluidos en el paquete.

El tema predeterminado de Zsh es "robbyrussell “. Para modificar este tema, actualice el ZSH_THEME valor variable en ~/zshrc archivo:

nano ~/.zshrc

Ahora edite el ZSH_THEME valor variable para configurar un nuevo tema para su terminal. Aquí hay una lista de ejemplos de UX.

Para aplicar los cambios, utilice la source comando:

source ~/.zshrc

Expansión comodín

Los nombres de archivo se utilizan para coincidir con los comodines. Bash tiene esta función incorporada, mientras que para Zsh, debe habilitar la expansión de comodines configurando el subconjunto global.

Vamos a crear un par de .txt archivos en Bash:

touch text_file1.txt
touch text_file2.txt
ls

Ahora, podemos listar nuestro .txt archivos utilizando la expresión comodín en una variable:

files="*.txt"
echo $files

En Zsh, este enfoque no funcionará de forma predeterminada:

touch text_file1.txt
touch text_file2.txt
ls
file="*.txt"
echo $file
set -o GLOB_SUBST
file="*.txt"
echo $file

¡Ahora, las expresiones comodín están funcionando!

Ponga esta opción en ~/.zshrc , si desea mantener ese comportamiento de Zsh en el futuro:

set -o GLOB_SUBST

Resumen

Tanto Zsh como Bash son shells extremadamente potentes con muchas extensiones y opciones de configuración. Zsh tiene una sólida personalización, extensibilidad y características avanzadas. Bash aún se usa más ampliamente, así que piense en la compatibilidad con versiones anteriores de sus scripts con otros sistemas que pueda necesitar administrar.

Mi elección personal es Zsh cuando se trata de una computadora portátil personal y Bash cuando se trata de actividades de administración de un servidor.

Espero que este artículo te haya resultado útil. Si es así, ¡ayúdanos a difundirlo por todo el mundo!


Linux
  1. ¿Qué comando de terminal de Linux usas más?

  2. Linux vs Windows:qué sistema operativo es mejor para juegos de PC

  3. ¿Conservar el historial de Bash en varias ventanas de terminal?

  4. Sintaxis de declaración de sustitución de comandos en Bash:¿cuál de estos dos es mejor práctica?

  5. ¿Cómo verificar qué shell estoy usando?

MEDIA vs. LÁMPARA:¿Cuál es mejor?

¿Qué distribución de Linux es mejor? Linux Mint o Ubuntu

Ubuntu vs Arch:¿Qué distribución de Linux es mejor?

Pop!_OS vs Ubuntu:¿Cuál es mejor?

¿Qué es Zsh? ¿Deberías usarlo?

Ubuntu vs Arch:¿Qué distribución de Linux es mejor?

    Zsh Golpe
    Contiene muchas características avanzadas. No contiene funciones avanzadas.
    Tiene una estructura de archivos de configuración más compleja. La estructura de los archivos de configuración es simple.
    La configuración y la personalización son proporcionadas por el marco Oh My Zsh. Bash-it proporciona configuración y personalización.
    El historial de comandos se comparte entre todos los shells. Compartir la historia es difícil.
    Los scripts Zsh no se usan tanto. Los scripts Bash se utilizan mucho.
    Zsh no carga SHELLOPTS durante el inicio. SHELLOPTS se cargan durante el inicio.
    La configuración del entorno es más personalizable con zshrc , zlogin , zshenv , zlogout , zprofile . El entorno es menos personalizable y se puede implementar con menos scripts.
    Permite usar alias expandidos en cualquier parte del archivo. Bash no admite los alias expandidos de forma predeterminada.
    zparseopts hace que el análisis de los argumentos de los scripts sea muy fácil. Análisis de argumentos de script con getopts es un poco más desafiante.
    Los cálculos de terminal se pueden hacer usando zcalc . Necesita usar dos calculadoras externas:bc y expr .
    La configuración del terminal/los scripts de inicio automático se cargan desde ~/.zshrc archivo. Los scripts de configuración/inicio automático del terminal se cargan desde ~/.bashrc archivo.
    bindkey se utiliza para el enlace de claves. bind integrado y ~/.inputrc se utilizan para el enlace de teclas.
    Más opciones para crear avisos elegantes. Menos opciones para avisos sofisticados.
    setopt responsable de la configuración de shell. shopt configura los ajustes de shell.
    # no se considera un comentario a menos que INTERACTIVE_COMMENTS está configurado. # representa una cadena de comentarios.
    Patrones comodín extendidos habilitados de forma predeterminada. Utilice shopt -s extglob para habilitar patrones de comodines extendidos.
    Más formas de transformar el valor de la variable (expansión de parámetros). Menos métodos para transformar variables.
    Tiene funciones de autocompletado y corrección ortográfica integradas. Necesitas usar bash-completion paquete.
    Más complementos y temas disponibles. Menos complementos y temas disponibles.
    Zsh es más personalizable. Bash es menos personalizable.
    Compatible con POSIX si emulate sh se ha establecido. Siga los estándares POSIX si --posix se estableció la opción de línea de comandos.
    La finalización automática funciona más rápido. La finalización automática es más lenta.
    Comunidad más pequeña Comunidad más amplia