Make your terminal great again
Préambule
Cet article s’adresse principalement à tous les utilisateurs de terminaux, qu’ils soient des utilisateurs aguerris ou occasionnels …
Le terminal est un outil formidable pour réaliser efficacement … et bien à peu près tout ce que vous pourriez être amené à faire sur votre ordinateur, encore faut-il savoir s’en servir convenablement … en effet la syntaxe des interpréteurs de commande peut en rebuter plus d’un, mais avec un peu d’effort, on peut faire de grandes choses en ligne de commande, basées sur les commandes déjà disponibles avec votre interpréteur (SH, BASH, KSH, ZSH …) ou via des outils que l’on peut ajouter à votre terminal.
Pour vous encourager à utiliser cet outil formidable qu’est le terminal, rien de mieux que de le rendre un peu plus sexy que ce qu’il est de base sur votre OS.
Dans cet article nous nous concentrerons sur les terminaux d’OS de type Unix (Linux / MacOS), je m’excuse donc auprès des utilisateurs de Windows / Powershell car cet article ne s’adresse pas à eux 🤷♂️
J’explique donc ici comment via quelques outils additionnels, vous pourriez transformer votre terne invite de commande, en terminal de l’espace, pouvant rendre jaloux les OPS les plus barbus de votre DSI 😆
Allez c’est parti, make your terminal great again !
Choisir son terminal
La première chose à faire est de choisir son terminal. Par défaut, sur votre poste, vous aurez un terminal déjà installé mais avec des fonctionnalités limitées.
Je ne saurais que vous conseiller d’en choisir un qui vous permettra de bénéficier de fonctionnalités plus évoluées.
Je ne détaillerai pas dans cet article les différents terminaux du marché mais me concentrerai uniquement sur ceux que j’utilise.
Terminator
Pour les utilisateurs Linux, beaucoup de terminaux sont disponibles, et sans doute que le votre saura avoir un rendu satisfaisant pour des outils Oh-my-zsh que l’on va installer dans la suite de cet article.
Personnellement j’ai opté pour Terminator qui est un émulateur de terminal qui permet de scinder très facilement sa fenêtre en plusieurs terminaux, on peut aussi switcher de session via un système d’onglet, ce qui nous permet de n’avoir qu’une seule fenêtre avec toutes nos sessions.
C’est assez light, ça marche bien et c’est assez customizable.
Pour l’installer sur Ubuntu :
|
|
iTerm2
Pour les utilisateurs de Mac, le terminal de base disponible dans Mac OS ne dispose pas de fonctionnalités très avancées non plus, et pour un meilleur rendu graphique de ce qui va suivre, je ne saurai que vous conseiller d’utiliser une version plus avancée. Celui pour lequel j’ai opté est iTerm2
Ce terminal permet comme pour Terminator de splitter sa fenêtre afin d’avoir plusieurs sessions en même temps côte à côte, il possède également plein d’autres fonctionnalités avancées que n’a pas le terminal de base (gestion de profils, recherche avancée, historique de copier/coller, couleurs 24 bits)
La liste des features est à retrouver ici : https://iterm2.com/features.html
Pour l’installer sur MacOS :
|
|
Si vous n’avez pas homebrew installé sur votre version de MacOS, vous pouvez le télécharger ici : https://brew.sh/index_fr
Zsh
Maintenant qu’on a un terminal solide, on va s’attaquer à l’amélioration de notre interpréteurs de commande.
Zsh est un interpréteur de commande, au même titre que Bash ou encore Sh. L’intérêt de Zsh réside dans le fait qu’il soit rétro-compatible avec le Bash tout en offrant des fonctionnalités plus avancées (partage d’historique des commandes entre les différentes sessions de terminal, autocomplétion avancée …).
Pour installer Zsh sur Linux (Debian & Ubuntu) :
|
|
Pour installer Zsh sur MacOS :
|
|
Ensuite il faut en faire notre interpréteur par défaut au lancement du terminal :
|
|
Les infos détaillées pour l’installation sont à retrouver ici : https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH
Oh-my-zsh
On va maintenant installer Oh-my-zsh qui est une sorte de boite à outils open source basée sur l’interpréteur Zsh. Oh-my-zsh met à votre disposition un tas de plugins activables facilement pour votre terminal ainsi que des thèmes pour améliorer son rendu.
Une des fonctionnalité sympa de Oh-my-zsh est sa mise à jour automatique hebdomadaire pour bénéficier des dernières fonctionnalités développées par sa grande communauté.
|
|
Une fois Oh-my-zsh installé sur votre terminal, vous allez trouver un nouveau fichier .zshrc
à la racine de votre home. Ce fichier vous servira à configurer votre installation de Oh-my-zsh.
Les plugins
Plusieurs plugins ont été développés par la communauté, vous pouvez les retrouver sur la page https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins
Cependant des plugins additionnels non installés par défaut sont également disponibles à l’adresse https://github.com/zsh-users
Pour ajouter/supprimer des plugins à votre installation de Oh-my-zsh il faut trouver la clé suivante dans le fichier ~/.zshrc
:
|
|
Ici nous voyons que le plugin git
est déjà activé. Il met à disposition tout un tas d’alias pour effectuer des opérations avec Git, la liste des alias disponibles est accessible ici : https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git
Ajoutons-y 2 plugins vraiment utiles :
|
|
Il suffit d’ajouter le nom du plugin dans cette liste pour qu’il soit activé.
Cette manipulation est suffisante uniquement pour les plugins déjà présent nativement au sein de Oh-my-zsh. Pour les 2 plugins additionnels zsh-autosuggestions
et zsh-syntax-highlighting
que l’on vient d’ajouter et qui sont présentés ci-après, il faudra se rendre sur les pages Github associées et suivre les instructions d’installation de la documentation.
Lien vers la documentation des plugins Oh-my-zsh : https://github.com/ohmyzsh/ohmyzsh#plugins
zsh-autosuggestions
Ce plugin ultra pratique suggère la fin de la ligne de commande en se basant sur l’historique des commandes déjà effectuées. Si la suggestion vous convient, vous pouvez l’accepter en appuyant sur la touche →
Une fois adopté, vous ne pourrez plus vous passer de ce plugin.
Page Github : https://github.com/zsh-users/zsh-autosuggestions
zsh-syntax-highlighting
Ce plugin permet de colorer la commande entrée dans le terminal, si la commande n’est pas reconnue par le système, elle sera colorée en rouge, sinon elle sera colorée en vert. Ce n’est pas tout car le plugin sait reconnaître également l’usage de variables, d’accolades et autres …
Page Github : https://github.com/zsh-users/zsh-syntax-highlighting
Les thèmes
Maintenant que nous avons configuré les plugins, intéressons-nous aux thèmes.
Les thèmes permettent de customiser les informations affichées sur et autour du prompt. Par exemple certains thèmes utilisent des icônes pour agrémenter le visuel, comme l’icône Git lorsqu’on se trouve dans le répertoire d’un repository github/gitlab ou l’icône de la batterie sur un laptop, le wifi etc… Tout cela est configurable.
Un exemple d’infos intégrables au prompt (oui c’est vrai ça fait un peu beaucoup ici 😅) :
Un certain nombre de thèmes sont déjà installés nativement et donc disponibles rapidement. Vous pouvez retrouver la liste complète ainsi qu’un aperçu sur la page suivante : https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
Le thème par défaut est agnoster
, pour le changer il vous faut trouver la clé ZSH_THEME
dans le fichier ~/.zshrc
et remplacer "agnoster"
par le nom du thème qui vous convient.
Cependant la communauté a également développé d’autres thèmes, certains plus riches que ceux déjà disponibles nativement. La liste des thèmes externes référencés est accessibles ici : https://github.com/ohmyzsh/ohmyzsh/wiki/External-themes
C’est dans cette page que nous allons trouver celui que je vous propose d’installer maintenant.
Powerlevel10k
Personnellement, le thème que j’utilise pour un terminal vraiment sexy est Powerlevel10k, c’est un thème très populaire (18k ⭐)
1️⃣ Avant d’installer ce thème, il nous faut d’abord installer la police qui sera utilisée par le thème. La police recommandée MesloLGS NF
est disponible (ainsi que la procédure d’installation pour les différents terminaux) ici
2️⃣ Ensuite pour l’installation du thème il faut cloner le thème :
|
|
3️⃣ Dans le fichier ~/.zshrc
, remplacer la ligne ZSH_THEME="agnoster"
par ZSH_THEME="powerlevel10k/powerlevel10k"
4️⃣ Redémarrer Zsh pour prise en compte du thème : source ~/.zshrc
5️⃣ Lancer la configuration du thème : p10k configure
Ceci lancera une CLI interactive vous permettant de configurer finement votre thème (voir aperçu ci-après)
Une fois votre configuration terminée, elle est enregistrée dans le fichier ~/.p10k.zsh
Vous pouvez à tout moment reconfigurer votre thème en modifiant le fichier ~/.p10k.zsh
ou en relançant la commande p10k configure
Fzf
Je profite de cet article pour faire la publicité d’un autre outil pour votre terminal que j’apprécie particulièrement : Fzf
Fzf c’est une CLI (Command Line Interface) interactive qui nous aide à faire des recherches dans l’historique de commande, les fichiers, les processus, les commits Git etc.
Je l’utilise surtout pour mes recherches dans l’historique des commandes. Il se greffe sur le raccourci d’accès à l’historique Ctrl
+ R
et nous permet de faire une recherche interactive dans notre historique
Pour installer Zsh sur Linux (Debian & Ubuntu) :
|
|
Pour installer Zsh sur MacOS :
|
|
Normalement la ligne suivante a été ajoutée dans votre ~/.zshrc
:
|
|
Vous pouvez tester en faisant une recherche dans votre historique via Ctrl
+ R
, une invite interactive apparaît, vous pouvez désormais taper un extrait d’une commande passée, pas forcément le début, et la liste des résultats est actualisée en live pour coller à votre extrait :
Résumé
A la fin de ce tutoriel, voici ce que vous devriez obtenir (voir capture ci-après) avec la configuration suivante :
- Terminal Iterm2 de MacOS
- Oh-my-zsh
- Plugins
git
,zsh-autosuggestions
etzsh-syntax-highlighting
- Thème Powerlevel10k
- Configuration p10k custom suivante :
- Prompt Style : Classic
- Prompt Color : Dark
- Show current time? : Yes
- Prompt Separators : Angled
- Prompt Heads : Round
- Prompt Tails : Slanted
- Prompt Height : Two lines
- Prompt Connection : Dotted
- Prompt Frame : Full
- Prompt Spacing : Sparse
- Icons : Many icons
- Prompt Flow : Concise
- Enable Transient Prompt? : Yes
Voilà, avec tous ces outils vous êtes désormais bien équipé pour bosser dans votre terminal. Je vous conseille quand même d’aller faire les curieux et d’aller fouiller du côté de la page des plugins de la communauté, en fonction de vos usages vous trouverez certainement plus de plugins encore à utiliser. Le but de tous ces outils est de vous faire gagner en efficacité / facilité dans l’utilisation de votre terminal. Vous devriez gagner un temps considérable … mais surtout vous aurez plaisir à évoluer dans un terminal sexy 😃
À propos de l'auteur : Mathieu Souchet
Développeur Full-Stack depuis 2007 (à forte teneur en Java), j’ai rejoint l’aventure Max en janvier 2017. Mon parcours m’a amené à collaborer au plus près de mes clients, leur apportant expertise technique, méthodologique et sens du service.
Touche-à-tout, passionné de technique, je m’épanouis en découvrant de nouvelles technos dans un contexte Agile et dans la bonne humeur.