De Bash à Zsh

J’ai longtemps utilisé Bash et, même si j’avais déjà entendu parler des alternatives, je ne voyais pas pourquoi changer. Puis, j’ai finalement décidé de tester Zsh et je pense y rester. Ceci dit, rédiger cet article m’a aussi donné envie d’explorer davantage Bash. Je vous expliquerai pourquoi.

Bash, Zsh, Ksh, Fish…

Linux propose différents shells. Si vous en avez déjà utilisé un, il y a de fortes chances pour que ce soit Bash. Il est généralement installé par défaut et, puisqu’il fonctionne très bien, pourquoi changer. Pourtant il existe des alternatives. Ici, je vais me contenter de vous présenter Bash et Zsh, je ne connais pas assez les autres pour en parler. Et même là, je ne vous garantis pas l’absence d’erreurs ou d’approximations.

Bash

Bash, acronyme de Bourne-Again shell, a été créé en 1989 par Brian Fox. L’objectif était de proposer une alternative au Bourne shell en lui apportant diverses améliorations, inspirées d’autres shells.

Zsh

Zsh, aussi appelé Z shell, a été créé en 1990 par Paul Falstad. Il s’agit d’une version étendue du Bourne shell. Il reprend diverses fonctions de bash, ksh et tcsh (d’autres shells).

Pourquoi passer de Bash à Zsh ?

Si vous n’utilisez pas ou peu votre terminal, il n’y a aucune raison de changer. Dans mon cas, j’ai décidé de changer avant tout par curiosité. J’ai souvent vu des shells qui semblaient bien plus attrayants que le mien et qui possédaient également plus de fonctionnalités. Dans la majorité des cas, il me semble qu’il s’agissait de Zsh. Je me suis dis qu’il était temps que je tente l’expérience.

Un framework est souvent installé en addition de Zsh ; le plus populaire est sans doute Oh My Zsh. Ce dernier vous permet de configurer rapidement Zsh et, surtout, il permet d’ajouter des plugins et des thèmes à votre shell.

Les fonctionnalités de Zsh + Oh My Zsh

Les plugins

Le Github de Oh My Zsh liste actuellement 279 plugins, en excluant ceux dépréciés. De quoi rajouter de nombreuses fonctionnalités à votre shell ! Dans la pratique, certains font doublons et surtout, vous n’avez sans doute pas besoin de tous ces plugins. Par ailleurs, plus vous aurez de plugins actifs, plus votre shell risque d’être lent à démarrer.

Parmi les plugins que j’ai trouvé intéressants, vous trouverez :

  • alias-finder : si vous ne vous souvenez plus des alias que vous avez déclarés, ce plugin vous permet de faire une recherche rapidement.
  • colored-man-pages : si vous utilisez la commande man plutôt que l’option --help, cela ajoute de la couleur au pages de manuel et votre lecture sera sans doute plus facile.
  • command-not-found : si vous utilisez une commande qui n’existe pas sur votre système, votre shell cherchera s’il y a un paquet qui correspond dans un dépôt et vous le suggérera (si vous êtes sur ArchLinux ou Manjaro, il faudra également installer pkgfile).
  • composer : si vous utilisez Composer, ce plugin propose plusieurs alias pour raccourcir vos commandes. (il existe la même chose pour Git, systemd…)
  • dirhistory : ce plugin vous permet de naviguer facilement dans vos dossiers (en fonction de l’historique et de la hiérarchie) à l’aide de raccourcis clavier.
  • gulp : ce plugin scanne les tâches Gulp et les propose en autocomplétion.
  • safe-paste : si vous copiez/coller du code dans votre shell, ce plugin évite qu’il soit exécuté automatiquement.
Exemple : Zsh Plugin - Manuel en couleur
Exemple : colored-man-pages

Il y en d’autres, je ne les ai pas tous listés. À vous de parcourir la liste et de choisir ceux qui sont utiles pour vos besoins. Sachez également que certains plugins ne sont pas livrés avec Oh My Zsh, mais vous pouvez en installer d’autres ou en créer vous-même. Parmi les plugins à installer soi-même, vous apprécierez peut-être :

Les thèmes

Par défaut, le Zsh n’est pas tellement plus attrayant que Bash, c’est même l’inverse à mon goût. Pour remédier à ça, vous pouvez lui ajouter des thèmes. Oh My Zsh propose environ 140 thèmes, mais vous pourrez en trouver d’autres en faisant une recherche sur Github par exemple. Les nouveaux thèmes ne sont plus ajoutés au framework.

Ces thèmes modifient l’apparence du prompt, mais ils peuvent également proposer quelques fonctionnalités. Par exemple, si vous utilisez Git, le shell peut afficher le nom de la branche et si elle est propre ou non, s’il y a des fichiers non suivis, etc. Ces informations seront affichées uniquement si vous êtes dans un dépôt Git.

Si dans la liste, aucun thème ne vous convient, vous pouvez toujours essayer de créer le vôtre selon vos goûts et vos besoins. Je m’y suis essayé, je ne publie pas le code pour le moment, c’est encore du « work-in-progress ». Je veux également personnaliser les couleurs de ls pour qu’elles correspondent un peu mieux à mon environnement.

Exemple : thème personnalisé Zsh
Mon thème dans un dossier Git

Les autres fonctionnalités de Zsh

Je ne vais pas toutes les citer, tout simplement parce que je ne les connais pas toutes et je ne les utilise pas toutes. J’utilise surtout les plugins. Parmi ses fonctionnalités, vous trouverez :

  • la complétion des commandes : c’est notamment utile pour naviguer dans les dossiers avec cd suivi d’une tabulation. Zsh affichera la liste des dossiers et vous pourrez sélectionner votre dossier grâce aux tabulations.
  • du globbing avancé permettant ainsi la recherche de fichier ou de contenu avec des métacaractères.
  • un système d’expansion des chemins : au lieu de faire cd et une tabulation vous pouvez aussi utiliser cd d/s/m/w où chaque lettre correspond à la première lettre des dossiers
Exemple : Zsh - cd commande

Installer Zsh et Oh My Zsh

Si vous souhaitez tester Zsh, vous pouvez l’installer sur votre distribution. Bash ne sera pas supprimé, son fichier de configuration non plus. Ainsi, vous pourrez passer de Zsh à Bash sans problème si Zsh ne vous plaît pas.

Vous pouvez installer le Z shell depuis les dépôts de votre distribution. Sur Manjaro :

sudo pacman -S zsh

Ensuite, pour profiter pleinement de Zsh, vous pouvez installer un framework comme Oh My Zsh :

// Attention, ces commandes lanceront l’installation automatiquement.
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
// ou
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Enfin, si vous souhaitez ajouter des plugins ou des thèmes, il faudra modifier votre fichier .zshrc. Si vous ne savez pas quel thème utiliser, il y a une variable random qui changera votre thème à chaque lancement d’un shell.

Fichier de configuration de Zsh

Si vous souhaitez faire de Zsh votre shell par défaut, vous pouvez le modifier à l’aide de ces commandes :

// Listez les shells installés :
chsh -l

// Puis, définissez votre shell par défaut :
chsh -s chemin-complet-du-shell

// Exemple :
chsh -s /usr/bin/zsh

Et si Bash pouvait faire la même chose ou presque ?

Comme je le disais au début de l’article, au cours de la rédaction je me suis aperçu qu’il existe également des frameworks, des plugins et des thèmes pour Bash. Parmi les frameworks, j’en ai vu deux qui semblent populaires : Bash it et Oh My Bash.

Je dois avouer que côté shells, je suis assez ignorant concernant leurs possibilités. Peut-être moins que certains puisque j’en utilise un presque quotidiennement, mais beaucoup plus que d’autres. Quand je voyais des shells customisés, je pensais que c’était soit Zsh et Fish (puisqu’ils sont populaires), mais si on compare les thèmes de Bash et ceux de Zsh, il y a beaucoup de similarités. Reste à savoir si les fonctionnalités sont également similaires.

Maintenant que je suis passé au Z shell, je vais continuer à l’utiliser et à l’apprivoiser (j’oublie parfois certaines fonctionnalités). Après tout, il me facilite la vie. Ceci dit, j’ai également envie d’en apprendre d’avantage sur les fonctionnalités de Bash.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.