Migration de Bash à zsh
Depuis quelques temps, je vois de plus en plus de personnes utilisant zsh comme shell par défaut en lieu et place de Bash. J'ai dont été tenté moi aussi d'essayer zsh.
Ce qui m'a fait sauter le pas en début de semaine, ce fût cette présentation disponible sur Slideshare et partagée sur Twitter par @UnixToolTip :
Lien de téléchargement de la présentation. Attention, SlideShare fournit un pdf un peu pouri et quasiment inutilisable.. :/
Les points qui m'ont vraiment attiré sont :
- Rétro compatibilité avec Bash
- Lors de l'auto-complétion, affichage des choix possibles avec seulement 1 TAB (au lieu de 2 avec Bash)
- L'auto-complétion des options de nombreux outils, donc Git, Make, etc... Par exemple, avec Git, lors d'un
git add
, zsh va ne lister avec TAB que les fichiers modifiés depuis le dernier commit, ce qui est très pratique. - Un historique des commandes lancées en temps-réel. Si vous avez plusieurs shells ouverts, une commande lancée dans l'un sera accessible dans l'historique (en remontant avec la flèche haut ou par une recherche Ctrl-R) dans l'autre directement sans avoir à rouvrir le shell.
- Une gestion des séparateurs améliorée par rapport à Bash.
Je m'explique sur ce dernier point. Quand, dans Bash, on fait un ^W pour supprimer le dernier "mot" tapé, Bash supprime tout jusqu'au prochain espace. Exemple :
quack@spiderman $ cd /home/quack/work^W quack@spiderman $ cd
Au contraire, zsh gère les séparateurs tels que le slash dans ^W, et supprimera tout jusqu'au prochain mot "réel" :
╭────<quack@spiderman >───< ~ > ╰───[8:53:11] $ cd /home/quack/work^W ╭────<quack@spiderman >───< ~ > ╰───[8:53:11] $ cd /home/quack/
C'est une fonctionnalité que j'attendais et que j'ai pu retrouver ici.
Il y a sûrement d'autres choses très bien dans zsh, mais toutes ne m'ont pas forcément parues exceptionnelles tout simplement parce que je ne vais pas les utiliser souvent.
Un dernier avantage est la communauté qu'il y a derrière, et surtout derrière oh-my-zsh, qui maintient une base de fichiers de configuration pour zsh, qui permet d'obtenir un super shell sans avoir à se plonger dans les méandres de la documentation à peine zsh installé. J'ai pu ainsi retrouver un shell identique à celui que je m'étais fait sur Bash simplement en modifiant un thème présent dans oh-my-zsh.
Si vous voulez essayer zsh
Pour l'installer sur votre système (chez moi Ubuntu) un simple apt-get install zsh
suffit. On change ensuite son shell par défaut pour utiliser zsh :
quack@spiderman $ chsh Mot de passe : Changement d'interpréteur de commandes initial pour quack Entrez la nouvelle valeur ou « Entrée » pour conserver la valeur proposée Interpréteur de commandes initial [/bin/bash]: /bin/zsh quack@spiderman $ $
Et après une déconnexion/reconnexion, on se retrouve avec un "beau" shell zsh :
spiderman%
Et voilà!
Retrouvez également le bon article de Julien sur son blog, où il explique plus en détail que moi l'installation et les premières étape de configuration!