Gagner en productivité avec bashrc !

Bon. Nous allons aborder l'une des meilleures astuces qu'il m'ai été donnée depuis le début de ma carrière. Si vous avez suivi mes précédents tutoriels sur les commandes SSH ou encore l'installation de Magento 2 avec composer, vous avez du découvrir une multitude de commandes qui vous ont déjà facilité la vie.
Eh bien aujourd'hui nous allons aller encore plus loin sur notre apprentissage du terminal et je vais vous introduire une nouvelle notion qui est l'alias de commande. Alors oui, dit comme ça ça ne parle pas forcément, pourtant vous allez voir que c'est un gain de temps énorme dans votre méthodologie.
Personnellement c'est un indispensable pour moi pour tout bon développeur. Par définition, un développeur doit être fainéant. Alors je vous vois déjà avec un petit sourire en coin, mais Non ! Je ne parle pas de l'envie (ou non) de travailler. Je parle ici de productivité. Un bon développeur doit avoir a sa disposition une suite d'outils qui lui permettent d'être pragmatique tant dans sa réflexion que dans sa méthodologie de travail.
Je reprends notre exemple Magento 2. Partons du principe que nous devons effectuer plusieurs opérations dans la même (demie) journée.
- Accéder à un dossier
- Installer une extension Magento 2
- Vider les caches de Magento 2
Pour cet exemple je pars du principe que je travaille sur un serveur VPS hébergé chez OVH disposant de Plesk, disons que j'ai des dossiers de travail qui s'appelleraient Preprod & Prod. Mon dossier Preprod contiendra deux dossiers « preprod01 » et « preprod02 », mon dossier Prod quant à lui ne contiendra qu'un seul dossier qui sera « prod01 ».
Petite précision, c'est un cas d'exemple, donc ne paniquez pas, inutile de reproduire mon arborescence de dossiers, vous pouvez adapter cet exemple à votre cas de figure sans aucun soucis !
Dernière précision, cet exemple est également valable en local. Donc si vous travaillez vos projets en local vous pourrez également (même si vous n'en n'aurez probablement pas autant besoin) adapter cette méthodologie à vos besoins.
Entrons maintenant dans notre exemple. Pour accéder à notre dossier « preprod01 » qui se trouve dans « Preprod » voilà la commande que l'on taperait habituellement :
Nous ferions la même chose pour nous rendre dans un autre dossier, et ainsi de suite. Génial... Mais sur notre machine nous disposons d'un fichier de configurations « .bashrc » qui est appelé à chaque fois qu'une ouverture de terminal s'effectue. L'utilité de ce fichier ? C'est simple, il peut contenir des tonnes de petites configurations (des alias) qui vont travailler pour vous.
Qu'est-ce qu'un alias ?
Un alias c'est un raccourci vers un élément ou une fonction donnée ! En clair, si vous indiquiez à un alias nommé d'effectuer une tâche, eh bien vous taperiez dans votre terminal le nom de votre alias et il effectuerait cette tâche pour vous ! Vous voyez où je veux en venir maintenant ?
Rappelez-vous notre exemple précédent, nous souhaitions nous rendre facilement dans différents dossiers, sans avoir à taper à chaque fois la totalité du chemin, puisque pour rappel lorsque vous travaillez avec votre terminal, vous devez entrer la totalité de votre chemin pour accéder à votre dossier. Pour le coup, vous n'allez taper que votre alias.
Alors voyons comment créer un alias. Tout d'abord vous devez créer un fichier « .bashrc » à la racine de votre installation s'il n'existe pas déjà. Pour cela, vous taperez la commande suivante :
Notez que j'utilise « nano », dans l'édition il existe également « vi » en remplacement de « nano » mais personnellement je trouve l'utilisation de « nano » beaucoup plus simple et facile à prendre en main. Vous trouverez chez OpenClassroom un très bon article traitant le sujet, mais ce n'est pas à l'ordre du jour !
Pour l'exemple, je vais créer des alias vers chacun des dossiers que j'ai listé dans mon exemple afin de bien comprendre le fonctionnement, vous pouvez le copier/coller et l'adapter à votre cas :
C omme nous travaillons avec « nano » pour enregistrer notre fichier faites « CTRL + X » puis taper sur « Y » (Y pour Yes, N pour No) puis sur Entrée pour valider.
Votre fichier est maintenant sauvegardé, en revanche votre session n'utilise pas ce fichier de configuration pour l'instant ! pour cela vous devez le « synchroniser », pas de panique il y à également une commande pour cela, je vous laisse la chercher sur internet et je vais me faire un café en attendant ?!
Bon allez, tapez ceci :
Alors, revenons sur ce que nous avons fait ! La commande « nano » est comme un éditeur de texte. Elle permet de créer / modifier un fichier (texte, php, csv, etc...). Dans ce fichier « bashrc », vous avez rentré des alias de commande. Leur fonction sera d'effectuer un « cd » puis le nom de votre dossier. La commande « cd » pour rappel sert à se déplacer dans l'arborescence de notre serveur.
En clair cela signifie que, dans mon terminal, peu importe où je me trouve, je pourrais taper le nom de mon alias, et ce dernier me conduira directement dans le dossier souhaité ! Si je veux aller dans mon dossier « preprod01 » une fois que je serais connecté à mon serveur je pourrais donc taper « preprod01 » et pouf, je me retrouverais dans le bon dossier ! Magique non ?
Application de Bashrc pour magento
Maintenant que vous avez appris à créer vos premiers alias, imaginez les possibilités d'applications dans le cas d'un projet Magento 2 par exemple. Comme je le disais, lorsque vous travaillez sur Magento, certaines commandes sont un peu redondantes, je pense notamment à celles qui ont pour objectif de vider les caches, effectuer des compilations ou encore générer des flux !
Pourquoi ne pas en faire des alias de commande alors ?!
Dans l'exemple ci-dessous je vais créer un alias sous forme d'inclusion de plusieurs commandes. Rappelez-vous que les commandes SSH ont la possibilité d'être chainées, c'est-à-dire mises les unes à la suites des autres sur un seul appel. Ce qui signifie qu'en une seule commande tapée, vous en effectuerez plusieurs.
Créons donc notre alias « générique »
Dans l'exemple ci-dessus, je n'ai pas modifié les alias de Preprod ni ceux de Prod, j'ai seulement rajouté mes alias génériques pour Magento 2. Grâce à eux, si je veux désormais utiliser une des commandes habituelles de Magento pour laquelle j'aurais habituellement tapé
Désormais dans mon terminal je ne taperais plus que :
Continuons sur notre lancée pour exploiter pleinement le fameux système de « chain » (chainage) de nos commandes en rajoutant un niveau de complexité :
Dans l'exemple ci-dessus je vous ai rajouté trois alias :
- cc : cet alias me sert à lancer la commande de cache clean de magento
- emptyCache : permet de supprimer les dossiers contenant des fichiers statiques de magento (ils sont regénérés automatiquement si vous avez activé le mode développeur, ne les supprimez pas directement en production !)
- emptyCacheAndClean : C'est là que la magie opère. Vous voyez que cet alias ne contient que quelques « mots » qui sont en fait des alias avec des opérateurs.
Dans notre alias « emptyCacheAndClean » vous pouvez voir que le premier élément est « pwd » qui nous retourne le chemin dans lequel nous nous trouvons afin d'être sur que nous travaillons dans le bon dossier, dans le cas présent voyez ça comme une commande informelle.
Cette commande est suivie de l'opérateur « && » qui nous permet de dire « Effectue telle action, et quand tu as finis passe à la suivante ». Ensuite vient notre alias « cc » qui vide le cache de magento.
En clair, vous pouvez voir qu'avec une seule commande vous effectuez plusieurs opérations d'un coup. Vous voyez qu'on est passé de commandes relativement longues et redondantes à des mots clé très simple à retenir que vous pouvez réutiliser sur n'importe quel projet d'une nature similaire. Pour cela vous n'aurez qu'à copier/coller le contenu de votre fichier « .bashrc » d'un serveur à l'autre.
Mon fichier bashrc Pour Magento 2
Comme Magento 2 est l'un des frameworks sur lequel je travaille le plus en ce moment, je vous propose de découvrir mon fichier « .bashrc » qui contient les commandes que j'utilise le plus souvent. C'est un fichier que je mets à jour régulièrement selon mes besoins, mais vous pouvez vous en inspirer pour vos projets Magento 2 et l'agrémenter selon vos propres besoins !
En conclusion
Ce tutoriel touche à sa fin, j'espère avoir été clair dans mes explications car je suis loin d'être un expert en ce qui concerne bash, cependant j'ai pu apprendre quelques petites choses que j'ai plaisir à partager avec vous. Si vous rencontrez des difficultés n'hésitez pas à me contacter.
Quoi qu'il en soit, même si de prime abord ces notions peuvent paraitre relativement complexes, c'est un réel gain de temps et une optimisation nette de votre productivité une fois pris en main.
Grâce à l'utilisation de votre terminal pouvez simplement effectuer des backups de vos bases de données sans avoir besoin d'acheter des licences pour des softwares tel que Navicat, ou encore perdre du temps à transférer vos fichiers en local pour conserver des backups de fichiers.

à tendances créatives
Si vous souhaitez me confier votre projet n'hésitez pas à me contacter, vous avez maintenant que votre projet est entre de bonnes mains.