GNU/Linux >> Tutoriels Linux >  >> Linux

Quel terminal est le meilleur :Bash vs Zsh

Généralement, lorsque nous parlons de serveurs Linux ou de conteneurs Docker, nous entendons généralement une interface de ligne de commande, un shell ou une expérience de terminal. Il existe deux shells largement utilisés par la communauté :Bash et Zsh. Le Bash est considéré comme le shell le plus utilisé. Dans le même temps, Z shell ou Zsh devient de plus en plus populaire de nos jours. Alors, quel terminal choisir ? Dans cet article, nous comparerons Bash à Zsh et tenterons de répondre à la question de savoir quel terminal est le meilleur.

Historique

Le shell Bash (Bourne Again Shell) a été introduit en 1989 pour remplacer Bourne Shell et il est devenu très rapidement le shell Linux par défaut. Bash est capable d'effectuer une large gamme de solutions de programmation et de tâches automatisées sous Linux, mais ce n'est pas le seul shell que vous pouvez utiliser. Il existe plusieurs autres shells qui peuvent exécuter des fonctions similaires à Bash.

L'un d'eux est Zsh, qui a été créé en 1990 en tant que shell Bourne étendu avec de nombreuses fonctionnalités supplémentaires de Bash, ksh et tcsh. Si vous êtes un utilisateur Linux, vous n'avez pas besoin d'installer Zsh séparément car il est inclus par défaut dans presque toutes les distributions modernes. Bash et Zsh partagent certaines fonctionnalités, mais il existe également de nombreuses différences entre ces shells, que nous décrirons dans cet article. Cet article couvre les sections suivantes :

  • Tableau comparatif des fonctionnalités
  • Comparaison UX Terminal
  • Liste des différences entre Bash et Zsh

Passons maintenant à la première section de cet article.

Comparaison des fonctionnalités

Dans cette partie, nous aborderons les différences les plus importantes.

Zsh Bash
Il contient de nombreuses fonctionnalités avancées. Il ne contient pas de fonctionnalités avancées.
A une structure de fichier de configuration plus complexe. La structure des fichiers de configuration est simple.
La configuration et la personnalisation sont fournies par le framework Oh My Zsh. La configuration et la personnalisation sont fournies par Bash-it.
L'historique des commandes est partagé par tous les shells. Le partage d'historique est difficile.
Les scripts Zsh ne sont pas si largement utilisés. Les scripts bash sont largement utilisés.
Zsh ne charge pas SHELLOPTS au démarrage. SHELLOPTS sont chargés au démarrage.
La configuration de l'environnement est plus personnalisable avec zshrc , zlogin , zshenv , zlogout , zprofile . L'environnement est moins personnalisable et peut être implémenté avec moins de scripts.
Permet d'utiliser des alias étendus n'importe où dans le fichier. Bash ne prend pas en charge les alias étendus par défaut.
zparseopts facilite l'analyse des arguments des scripts. Analyse des arguments de script avec getopts est un peu plus difficile.
Les calculs terminaux peuvent être effectués à l'aide de zcalc . Vous devez utiliser deux calculatrices externes :bc et expr .
Les scripts de configuration/démarrage automatique du terminal sont chargés à partir de ~/.zshrc fichier. Les scripts de configuration/démarrage automatique du terminal sont chargés depuis ~/.bashrc fichier.
bindkey est utilisé pour la liaison des clés. bind intégré et ~/.inputrc sont utilisés pour la liaison de clé.
Plus d'options pour créer des invites sophistiquées. Moins d'options pour les invites fantaisistes.
setopt responsable des paramètres du shell. shopt configure les paramètres du shell.
# n'est pas considéré comme un commentaire sauf si INTERACTIVE_COMMENTS est défini. # représente une chaîne de commentaire.
Modèles génériques étendus activés par défaut. Utilisez shopt -s extglob pour activer les modèles génériques étendus.
Autres façons de transformer la valeur de la variable (extension de paramètre). Moins de méthodes pour transformer les variables.
A intégré des fonctionnalités de saisie semi-automatique et de correction orthographique. Vous devez utiliser bash-completion paquet.
Plus de plugins et de thèmes disponibles. Moins de plugins et de thèmes disponibles.
Zsh est plus personnalisable. Bash est moins personnalisable.
Compatible POSIX si emulate sh a été défini. Suivez les normes POSIX si --posix l'option de ligne de commande a été définie.
La saisie semi-automatique fonctionne plus rapidement. La saisie semi-automatique est plus lente.
Petite communauté Communauté élargie

Bash vs Zsh – Volume de recherche Internet

Voici un graphique Google Trends, qui montre la comparaison du volume de recherche pour les deux shells :

Bash contre Zsh – UX

Dans cette section, nous passerons en revue les fonctionnalités de shell UX les plus couramment utilisées, que vous utilisez quotidiennement.

Configuration du conteneur Docker

Si vous souhaitez simplement tester les exemples suivants, la meilleure façon de le faire est de lancer le conteneur Ubuntu Docker :

docker run -it ubuntu:20.04 /bin/bash

Le conteneur Docker n'a pas Zsh installé par défaut, vous devez donc l'installer d'abord :

apt-get update
apt-get install -y zsh

Enfin, vous pouvez lancer le shell zsh :

zsh

Tab pour la complétion automatique

L'Tab l'utilisation des clés dans Zsh et Bash est un peu différente. Créons quelques répertoires imbriqués pour illustrer cet exemple :

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

Dans Bash, vous devez utiliser Tab clé pour compléter automatiquement le chemin d'accès au répertoire ou au fichier.

Par exemple, saisissez un , puis appuyez sur Tab , le type d et appuyez sur Tab à nouveau pour finaliser le chemin dans le terminal :

cd onedrive/docs

Le résultat attendu devrait ressembler à ceci :

En Zsh, utilisation de la Tab vous fournira la liste des options disponibles parmi lesquelles sélectionner.

Tapez un et appuyez sur Tab , puis appuyez sur Tab à nouveau autant de fois que vous le souhaitez pour sélectionner le répertoire requis :

Correction orthographique

La fonctionnalité de correction orthographique est prise en charge par les shells Zsh et Bash. Cependant, Zsh le fait plus efficacement.

Dans l'exemple ci-dessous, vous apprendrez comment activer Zsh et Bash pour corriger l'orthographe automatiquement.

Créons un répertoire nommé onedrive , si vous ne l'avez pas fait dans la partie précédente de l'article :

mkdir -p onedrive

Faisons maintenant une faute de frappe dans la commande shell Bash :

cd onedrave

Bash shell ne corrigera pas l'erreur de frappe de "dra ve" à "dri ve" et affiche l'erreur "Aucun fichier ou répertoire de ce type.

Pour activer la fonction de vérification orthographique automatique dans bash, vous devez modifier la configuration de Bash.

nano ~/.bashrc

Ajoutez la ligne suivante à la fin du fichier :

shopt -s cdspell

Utilisez le source commande pour appliquer les modifications au shell.

source ~/.bashrc

Exécutez à nouveau la commande mal orthographiée. Le terminal Bash a automatiquement corrigé la faute de frappe :

cd onedrave

Et Zsh ?

Épelons mal la commande "echo" pour vérifier si Zsh la détecte et la corrige automatiquement :

ehco "Hello World"

Comme prévu, Zsh n'a pas corrigé l'orthographe.

Nous allons maintenant apporter quelques modifications à la configuration de Zsh.

nano ~/.zshrc

Activez le correctexport option pour le shell. Vous pouvez également spécifier un message d'invite :

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

Ne vous inquiétez pas si le fichier est vide, c'est OK, il sera peuplé de configuration supplémentaire dès que nous installerons Oh My Zsh plus tard.

Voici à quoi cela devrait ressembler si vous nous suivez dans le conteneur Docker :

Exécutez le source commande pour appliquer les modifications au shell.

source ~/.zshrc

Exécutez le echo mal orthographié commande à nouveau :

ehco "Hello World"

Et voilà !

La vérification orthographique automatique est désormais activée :

Thèmes

Vous devez installer Git pour pouvoir utiliser tous les thèmes et personnalisations Bash ou Zsh :

apt-get install -y git

Pour installer des personnalisations pour le shell Bash, utilisez la commande suivante :

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

Le processus d'installation est très simple :

~/.bash_it/install.sh

Nous pouvons maintenant modifier ~/.bashrc fichier pour modifier le thème Bash :

nano ~/.bashrc

Modifier BASH_IT_THEME valeur variable à n'importe quel thème existant dans le groupe de thèmes, par exemple, essayez envy .

Pour appliquer les modifications, exécutez la commande suivante :

source ~/.bashrc

Maintenant, personnalisons Zsh.

Comme mentionné précédemment, le framework Oh My Zsh fournit de nombreuses fonctionnalités utiles et une vaste collection de thèmes.

L'installation d'Oh My Zsh n'est pas très difficile non plus :

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

Répondez simplement O à toutes les questions et vous obtiendrez une belle personnalisation du shell par défaut :

Désormais, les thèmes Zsh se trouvent dans :~/.oh-my-zsh/themes dossier :

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

Ici, vous pouvez voir les noms des thèmes inclus dans le bundle.

Le thème par défaut de Zsh est "robbyrussell “. Pour modifier ce thème, mettez à jour le ZSH_THEME valeur de la variable dans ~/zshrc fichier :

nano ~/.zshrc

Modifiez maintenant le ZSH_THEME valeur variable pour configurer un nouveau thème pour votre terminal. Voici une liste d'exemples UX.

Pour appliquer les modifications, utilisez le source commande :

source ~/.zshrc

Extension générique

Les noms de fichiers sont utilisés pour correspondre aux caractères génériques. Bash possède cette fonctionnalité intégrée, alors que pour Zsh, vous devez activer l'extension générique en définissant le sous-ensemble global.

Créons quelques fichiers .txt fichiers dans Bash :

touch text_file1.txt
touch text_file2.txt
ls

Maintenant, nous pouvons lister notre .txt fichiers en utilisant l'expression générique dans une variable :

files="*.txt"
echo $files

Dans Zsh, une telle approche ne fonctionnera pas par défaut :

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

Désormais, les expressions génériques fonctionnent !

Mettez cette option à ~/.zshrc , si vous souhaitez conserver ce comportement de Zsh à l'avenir :

set -o GLOB_SUBST

Résumé

Zsh et Bash sont des shells extrêmement puissants avec de nombreuses extensions et options de configuration. Zsh offre une personnalisation, une extensibilité et des fonctionnalités avancées robustes. Bash est encore plus largement utilisé, pensez donc à la rétrocompatibilité de vos scripts avec d'autres systèmes que vous devrez peut-être gérer.

Mon choix personnel est Zsh lorsqu'il s'agit d'un ordinateur portable personnel et Bash lorsqu'il s'agit d'activités de gestion de serveur.

J'espère que cet article vous a été utile. Si oui, s'il vous plaît, aidez-nous à le diffuser dans le monde !


Linux
  1. Conserver l'historique de Bash dans plusieurs terminaux Windows ?

  2. Quel Bash est en cours d'exécution ?

  3. Comment vérifier quel shell j'utilise ?

  4. Glob insensible à la casse sur zsh/bash

  5. Historique bash sans numéro de ligne

MOYENNE Vs. LAMPE :Quel est le meilleur ?

Quelle distribution Linux est la meilleure - Linux Mint ou Ubuntu

Ubuntu vs Arch :quelle distribution Linux est la meilleure ?

Pop!_OS contre Ubuntu :lequel est le meilleur ?

Qu'est-ce que Zsh ? Devriez-vous l'utiliser ?

Ubuntu vs Arch :quelle distribution Linux est la meilleure ?