Article de reference

Coque Z

Le shell Z ( Zsh ) est un interpréteur de commandes pour les scripts shell . Zsh conserve en grande partie la syntaxe et le comportement du shell Bourne , mais dans sa configura...

Le shell Z ( Zsh ) est un interpréteur de commandes pour les scripts shell . Zsh conserve en grande partie la syntaxe et le comportement du shell Bourne , mais dans sa configuration par défaut, il s'écarte sensiblement de la spécification standard POSIX du langage (par exemple, en éliminant la division implicite des IFS et l'utilisation de caractères génériques lors de l'expansion de paramètres non entre guillemets) et ajoute de nombreuses fonctionnalités supplémentaires. sh

Zsh a été créé par Paul Falstad en 1990 alors qu'il était étudiant à l'université de Princeton . Il combine des fonctionnalités de ksh et de tcsh (et, dans une moindre mesure, de rc ), offrant des fonctionnalités telles que la complétion programmable de la ligne de commande , la reconnaissance de caractères étendue pour les fichiers, une gestion améliorée des variables et des tableaux, et des invites de commande personnalisables .

Zsh est disponible pour la plupart des systèmes d'exploitation POSIX/Unix, ainsi que pour Microsoft Windows (via Cygwin ou la suite UnxUtils) . Il a été adopté comme interpréteur de commandes interactif par défaut pour macOS , Deepin , TrueNAS et Kali Linux . Le site web communautaire « Oh My Zsh » propose une plateforme pour les extensions et thèmes tiers et bénéficie d'une large communauté de contributeurs actifs.

Histoire

Paul Falstad a écrit la première version de Zsh en 1990 alors qu'il était étudiant à l'université de Princeton . Le nom Zsh provient du nom de Zhong Shao, un assistant d'enseignement à l'université de Princeton. Falstad considérait le nom d'utilisateur de Shao , « zsh », comme un bon nom pour un shell.

Zsh était initialement conçu comme un sous-ensemble de csh pour l' Amiga , mais son champ d'application s'est considérablement étendu. Lors de la sortie de la version 1.0 en 1990, l'objectif était de créer un hybride entre ksh et tcsh : un puissant « langage de commandes et de programmation », bien conçu et logique (comme ksh), mais également pensé pour les humains (comme tcsh), avec toutes les fonctionnalités pratiques telles que la correction orthographique, la surveillance des connexions/déconnexions et la prise en charge de termcap, jugées « probablement trop étranges pour être intégrées à un produit AT&T ».

Des versions de Zsh pour Microsoft Windows sont disponibles via Cygwin depuis au moins 1997 , et Zsh est fourni comme paquet officiel Cygwin depuis 2002. Il est également disponible dans la collection UnxUtils, qui regroupe des versions Win32 natives d'utilitaires GNU de type Unix courants (bien que Zsh, contrairement à Bash , ne fasse pas partie du projet GNU lui-même).

En 2019, macOS Catalina a adopté Zsh comme shell de connexion par défaut, remplaçant la version sous licence GPLv2 de Bash , et lorsque Bash est exécuté de manière interactive sur Catalina, un avertissement est affiché par défaut.

Le shell par défaut de TrueNAS (anciennement FreeNAS) est passé de csh à Zsh dans FreeNAS 11.2 publié fin 2018.

En 2020, Kali Linux a adopté Zsh comme shell par défaut depuis sa version 2020.4.

Caractéristiques

Utilitaire de configuration de Z shell pour les nouveaux utilisateurs
Zsh avec thème Agnoster fonctionnant sur l'émulateur de terminal Konsole

Les fonctionnalités comprennent :

  • Complétion automatique de la ligne de commande programmable qui aide l'utilisateur à saisir les options et les arguments des commandes les plus courantes, avec une prise en charge native de plusieurs centaines de commandes.
  • Partage de l'historique des commandes entre tous les shells en cours d'exécution
  • La reconnaissance de fichiers étendue permet de spécifier un fichier sans avoir besoin d'exécuter un programme externe tel que find.
  • Gestion améliorée des variables et des tableaux ( numérotation non basée sur zéro )
  • Édition de commandes multilignes dans un seul tampon
  • Correction orthographique et remplissage automatique des noms de commandes (et éventuellement des arguments, vraisemblablement des noms de fichiers)
  • Différents modes de compatibilité, par exemple Zsh peut se faire passer pour un shell Bourne lorsqu'il est exécuté en tant que/bin/sh
  • Des invites personnalisables , notamment la possibilité d'afficher les informations d'invite à droite de l'écran et de les masquer automatiquement lors de la saisie d'une commande longue.
  • Modules chargeables, offrant entre autres : un contrôle complet des sockets de domaine TCP et Unix , un client FTP et des fonctions mathématiques étendues.
  • La commande intégrée where. Fonctionne comme la whichcommande, mais affiche tous les emplacements de la commande cible dans les répertoires spécifiés, $PATHet non seulement celui qui sera utilisé.
  • Répertoires nommés. Cela permet à l'utilisateur de créer des raccourcis tels que ~mydir, qui se comportent ensuite de la même manière ~que et ~user.
  • Widgets. Qu'ils soient construits ou implémentés par des fonctions ordinaires, les widgets peuvent être associés à des raccourcis clavier.
  • Chargement automatique des fonctions. Optimisation des performances pour les fonctions pouvant être préchargées et exécutées à la demande. Le chargement des fonctions dans des fichiers séparés vise également à assurer la compatibilité des fonctionnalités avec différentes versions de Zsh.

Communauté

Logo Oh My Zsh

Le site web communautaire « Oh My Zsh » rassemble des plugins et des thèmes tiers pour le shell Z. En 2024, son dépôt GitHub comptait plus de 2 300 contributeurs, plus de 300 plugins et plus de 140 thèmes. Il propose également un outil de mise à jour automatique qui simplifie la maintenance des plugins et thèmes installés.

Au-delà des frameworks intégrés, le dépôt communautaire indépendant zsh-users sur GitHub héberge plusieurs extensions autonomes largement utilisées. Parmi celles-ci figurent zsh-completions pour des définitions avancées de complétion automatique des commandes , zsh-syntax-highlighting pour la coloration syntaxique en temps réel de la ligne de commande et zsh-autosuggestions pour des recommandations de commandes basées sur l'historique . La même organisation a également développé Antigen, l'un des premiers gestionnaires de plugins populaires pour Zsh . De plus, la communauté enrichit activement l'écosystème du shell Z avec des gestionnaires de configuration alternatifs, tels que le framework haute performance Zim (zimfw), axé sur la vitesse d'exécution , et le système de configuration modulaire Veil (veil.zsh), qui optimise la structure de configuration interne sans dépendre de gestionnaires de plugins externes