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 commandeman
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 installerpkgfile
).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.
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 :
- zsh-syntax-highlighting : ce plugin colore la syntaxe de vos commandes dans le shell.
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.
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 utilisercd d/s/m/w
où chaque lettre correspond à la première lettre des dossiers
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, les commandes suivantes 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.
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.
0 commentaire
Laisser un commentaire