Oh-My-Zsh ! Une œuvre de magie CLI – Tutoriel pour Ubuntu

Michiel Mulders
Michiel Mulders

Follow

29 août, 2017 – 6 min lu

Oh-My-Zsh Agnoster Theme

Je suis un grand fan de l’interface en ligne de commande…. Je déteste utiliser la souris de mon ordinateur ! Cela m’a motivé à rechercher de grands outils pour améliorer mon expérience utilisateur sur la CLI. J’ai découvert Oh-My-Zsh pendant mon stage. Des amis m’ont convaincu d’utiliser ce shell en raison de sa simplicité et de son adaptabilité. En prime, le CLI est extensible avec de nombreux plugins.

Voici une liste de ses capacités :

  • Validation des commandes
  • Correction de l’orthographe
  • Partage de l’historique des commandes entre tous les shells en cours d’exécution
  • Les invites mémorisables (Agnoster, RobbyRussell, ….)
  • Historique des répertoires
  • Scripts de démarrage/arrêt via zshenv, zprofile, zshrc, zlogin, et zlogout
  • Fortes capacités de complétion automatique. Vous pouvez utiliser la touche TAB pour naviguer entre les différentes options et utiliser la touche entrée pour sélectionner le bon dossier. Bash, par exemple, imprimerait toutes les options. Ceci est assez spammy et pollue votre scrollback.

  • Ajouter des plugins : par exemple le plugin Git avec une énorme liste d’alias Git utiles.
    Ce plugin montre la branche active et donne un retour visuel sur votre statut Git :
    – Vert : branche si aucun changement n’a eu lieu
    – Jaune avec une icône en forme de cercle : fichiers non suivis
    – Jaune avec une icône en forme de plus : fichiers prêts à être livrés

J’effectue ce guide d’installation sur ma machine virtuelle Ubuntu 16.04. Pour vous montrer la puissance sous-jacente de Oh-My-Zsh, je vais installer le plugin Git (Git-core). Ce plugin donne un retour visuel sur le statut Git d’un projet.

  1. Installer les paquets prérequis
    $ sudo apt install git-core zsh
  2. Installer Oh-My-Zsh à partir du dépôt de Robby Russell
    $ sh -c “$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)”
  3. Installer la police Powerline pour pimenter votre CLI avec des icônes
    $ sudo apt install fonts-powerline
  4. Changer le thème de ‘robbyrussell’ à ‘agnoster’ pour le légendaire thème Oh-My-Zsh
    $ nano ~/.zshrc
  5. Trouver la variable ZSH_THEME et la modifier:ZSH_THEME="agnoster"
  6. Je n’aime pas que le thème affiche mon nom d’utilisateur et mon hôte. Pour s’en débarrasser, nous changeons le répertoire en
    $ cd ~/.oh-my-zsh/themes
  7. Puis nous ouvrons le fichier du thème pour ‘agnoster’ dans l’éditeur
    $ nano agnoster.zsh-theme
  8. Maintenant nous pouvons changer le ‘Main prompt’. Nous n’avons pas besoin de prompt_context dans la fonction build_prompt(). Il suffit de commenter cette ligne ou de la supprimer. Enfin, changez la variable PROMPT en $(build_prompt).

Configuration du thème Agnoster

Pour voir réellement le thème, vous devez sourcer votre fichier .zshrc comme ceci : source ~/.zshrc. Si tout s’est bien passé, vous devriez voir quelque chose comme l’image de couverture!

Extra : Définir zsh comme notre shell par défaut. Exécutez ceci dans votre shell par défaut, dans la plupart des cas, ce sera bash. Si vous exécutez cette commande dans zsh, cela ne changera rien :
$ chsh -s $(which zsh)

Note : Si vous utilisez sudo, cela changera le shell pour root, mais pas pour votre utilisateur de travail. En plus de cela, assurez-vous de vous déconnecter et de vous reconnecter pour voir les changements.

Installation des plugins

Tous les plugins listés sur la page Github des plugins sont préinstallés avec Oh-My-Zsh à ~/.oh-my-zsh/plugins. Les plugins personnalisés peuvent être installés à ~/.oh-my-zsh/custom/plugins. Pour utiliser un plugin, vous pouvez simplement l’ajouter à la liste des plugins dans votre fichier ~/.zshrc. Ajoutez judicieusement, car trop de plugins ralentissent le démarrage du shell. Laissez un blanc entre chaque plugin.

Colored-man-pages

Dans cet exemple, j’ai installé un plugin utile pour donner un surlignage de couleur à votre man pages . Pour pouvoir utiliser le plugin, sourcez votre .zshrcfichier :
$ source ~/.zshrc

Page Man colorée de la commande ls

Zsh-syntax-highlighting

Un autre plugin génial est la coloration syntaxique pour votre shell. En plus de cela, ce plugin a la capacité de vérifier l’exactitude de votre commande.

Ce plugin n’est pas installé avec Oh-My-Zsh. Naviguez vers ~/.oh-my-zsh/custom/plugins et clonez le code depuis Github dans ce dossier:
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting

Vous verrez un dossier nommé zsh-syntax-highlighting. C’est le nom qui doit être ajouté à la liste des plugins.

Zsh-autosuggestions

Vous pouvez également utiliser zsh-autosuggestions pour la complétion de commandes. Il suggère des commandes en se basant sur votre historique de commandes. Très utile ! Pour sélectionner la commande proposée, appuyez sur la touche flèche droite.

L’installation est la même qu’avec zsh-syntax-highlighting :
$ git clone https://github.com/zsh-users/zsh-autosuggestions
Et ajoutez zsh-autosuggestions à la liste des plugins.

S’occupe des amateurs d’alias

Oh-My-Zsh se souvient automatiquement des 20 derniers répertoires que vous avez visités. Vous pouvez lister l’historique chronologiquement avec dirs -v ou juste d.

Normalement, vous pouvez utiliser cd +1 pour aller au répertoire précédent et ainsi de suite. Oh-My-Zsh a rendu cela encore plus simple, maintenant vous pouvez utiliser juste le numéro de l’entrée dans l’historique du répertoire que vous voulez visiter… 1.

Autres alias intéressants

  • alias : Liste tous les alias. Vous pouvez diriger la sortie vers grep pour rechercher un alias particulier.
  • / : cd /
  • ~ : cd ~
  • ... : cd ../..
  • .... : cd ../../..
  • ..... : cd ../../../.. Je pense que vous avez compris, non ?
  • take test_folder : Crée un dossier nommé test_folder et y apporte des modifications
  • x : Extrait des archives de types tar, bz2, rar, gz, tbz2, tgz, zip, Z, 7z
  • upgrade_oh_my_zsh : Commando facile pour mettre à jour votre installation

Problèmes bien connus &Solutions

Il peut arriver que le fichier historique soit corrompu. Ne me demandez pas les détails spécifiques. Chaque fois que vous lancez un nouveau terminal, vous obtenez ce message :

zsh: corrupt history file /home/myusername/.zsh_history

Réparons cela avec les commandes suivantes. Assurez-vous que vous êtes à la racine du homefolder. La commande fc liste, modifie ou réexécute les commandes précédemment entrées dans un shell. La commande history vous permet d’utiliser les mots des lignes de commande précédentes dans la ligne de commande que vous tapez.

mv .zsh_history .zsh_history_bad
strings .zsh_history_bad > .zsh_history
fc -R .zsh_history

Conclusion

Oh-My-Zsh est tout simplement génial !

Liens et sources utiles

Cet article a été réalisé avec l’aide de TheLedger.

  • Oh-My-Zsh : http://ohmyz.sh/
  • Plugins : https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins
  • Thèmes : https://github.com/robbyrussell/oh-my-zsh/tree/master/themes/
  • Plugin Git avec tous les alias : https://github.com/robbyrussell/oh-my-zsh/wiki/Plugin:git
  • Personnalisation de votre invite shell : http://www.nparikh.org/unix/prompt.php#zsh
  • ArchWiki sur Zsh : https://wiki.archlinux.org/index.php/zsh#Autostart_X_at_login
  • Le plugin de coloration syntaxique de Zsh : https://github.com/zsh-users/zsh-syntax-highlighting
  • Plugin d’autosuggestions Zsh : https://github.com/zsh-users/zsh-autosuggestions
  • RobbyRussell Wiki sur la personnalisation de Zsh : https://github.com/robbyrussell/oh-my-zsh/wiki/Customization

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.