Blog tech

Astuces Zsh installer et comprendre Oh My Zsh

Rédigé par Nicolas Cavigneaux | 21 avril 2015

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 :

Et maintenant avec Zsh :

Essayons maintenant avec Git depuis Bash :

Et avec Zsh :

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 :

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

et après :

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

On peut aussi faire du remplacement de chemin :

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

Un peu de renommage programmable :

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.