Astuces Zsh installer et comprendre Oh My Zsh

Publié le 21 avril 2015 par Nicolas Cavigneaux | outils

Cet article est publié sous licence CC BY-NC-SA

En tant que développeur je passe un nombre incalculable d’heures dans mon terminal à taper des commandes et analyser les retours de celles ci pour manipuler des fichiers, installer / lancer / stopper des services, utiliser le DSCM, …

J’aime à croire que tous les développeurs sont comme moi et ont toujours un terminal ouvert pour traiter leurs tâches récurrentes. Vous n’utilisez pas un IDE pour tout faire à la souris n’est-ce pas ?

Si vous êtes comme moi et que vous n’utilisez pas encore Oh My Zsh ou encore pire Zsh je vous invite à continuer la lecture de cet article qui vous permettra d’augmenter de façon significative votre productivité en console.

Pourquoi Zsh ?

Vous êtes utilisateur de Bash ? Peut-être simplement parce que c’est souvent le shell installé par défaut sur les différents *nix. Avez-vous déjà pensé à tester autre-chose ?

J’ai pendant longtemps moi-même utilisé Bash parce que c’était ce qui était configuré par défaut et que je pensais être à la pointe de ce que je pouvais faire dans un shell. Puis un jour j’ai testé d’autres shells par curiosité et Zsh a particulièrement retenu mon attention.

Depuis Bash a rattrapé son retard sur plusieurs points mais reste toujours très en retrait par rapport à Zsh.

Alors concrètement qu’est-ce que ça apporte ? Voici quelques exemples tirés d’une liste qui pourrait être bien plus longue :

  • une complétion des commandes très largement au dessus des possibilités de Bash
  • remplacement d’une partie des chemins
  • prompt à gauche et à droite qui disparaît si l’espace devient manquant
  • correction d’erreur lors de la frappe d’une commande
  • globbing étendu
    • ls -l *.log => classique
    • ls -l **/*.log => récursif
  • édition interactive de variable d’environnement ($ vared PATH va afficher le contenu de la variable et de l’éditer directement )
  • renommage de fichiers programmable
  • historique intelligent qui ne propose que ce qui correspond à ce que vous avez commencé à taper
  • historique partagé entre les consoles
  • expansion des variables d’environnement ($PATH et tabulation remplace la variable par son contenu)
  • alias locaux : alias ls=’ls –color=auto’
  • mais aussi alias globaux ($ alias -g gp='| grep -i' permet de faire $ ps aux gp ruby qui donne ps aux | grep -i ruby
  • alias suffixes
$ alias -s rb=vim
$ alias -s log="less -MN"
$ alias -s html="open"

% user.rb
# => vim user.rb
% development.log
# => less -MN development.log
% index.html
# => open index.html

Voici quelques exemples d’utilisation en image :

Complétion de la commande cd avec Bash :

bash cd completion

Et maintenant avec Zsh :

zsh cd completion

Essayons maintenant avec Git depuis Bash :

bash git completion

Et avec Zsh :

zsh git completion

Vous l’aurez compris Bash est à la ramasse et ce serait du même acabit pour la suite je vais donc me contenter de mettre des captures d’écran concernant Zsh pour la suite :

zsh kill completion

zsh ls options completion

complétion des répertoires (avant l’appuie sur tab) :

zsh path completion

et après :

zsh path completion

En ce qui me concerne, je trouve que … ça claque !

On peut aussi faire du remplacement de chemin :

zsh path replacement

zsh path replacement

Utilisation d’un prompt à gauche (PS1) et à droite (RPS1) qui disparaît quand la commande est trop longue :

zsh prompts

zsh right prompt hidding

Un peu de renommage programmable :

zsh programable renaming

Il y a encore plein d’autres choses, tellement qu’il m’est impossible de tout lister en un seul article. Je pense que cette liste d’exemple est bien suffisante pour vous montrer à quel point Zsh est puissant.

Impressionné ? Convaincu ?

Changer de shell par défaut

Si vous êtes convaincu, il est temps de changer votre shell par défaut grâce à la commande suivante :

$ chsh -s /bin/zsh

Commencez par vous amuser un peu avec les fonctionnalités de base de Zsh, notamment celles que je vous ai présenté dans la section précédente. Vous ne devriez pas être perdu puisque toute la base du fonctionnement est très similaire à Bash.

Pour tout ce qui est différent, c’est très intuitif et ça fonctionne mieux ;-)

Encore plus de swagg !

Vous n’êtes pas encore satisfait, impressionné ? Vous voulez en mettre encore plus vous la raconter devant vos collègues ?

Ok, passons à l’installation de Oh My Zsh qui permettra d’enterrer définitivement votre ancien shell et comblera les derniers manques que vous pourriez avoir en tant que poweruser.

Une commande à lancer et le framework sera installé pour votre utilisateur :

$ curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh

Vous avez maintenant un fichier ~/.zshrc tout frais dans lequel vous allez pouvoir personnaliser votre installation, choisir un thème ou encore activer des plugins.

Le thème se configure via la variable d’environnement ZSH_THEME, vous pouvez trouver la liste des thèmes dans ~/.oh-my-zsh/themes.

Les plugins disponibles sont quant à eux visibles dans ~/.oh-my-zsh/plugins/, pour en activer il suffit de les ajouter à la liste contenue dans la variable plugins.

Nous n’irons pas plus loin dans cet article, il vous faut déjà faire connaissance avec Zsh et ses fonctionnalités natives. Vous verrez qu’on peut déjà faire beaucoup de choses sans plugin et que ce shell vous fera vous demander comment vous faisiez avant.

Dans un prochain article je parlerais plus en détail de Oh My Zsh, de sa configuration et de ses différents plugins.


L’équipe Synbioz.

Libres d’être ensemble.

Recevoir les offres d'emploi de Synbioz par email