1 00:00:00,000 --> 00:00:05,720 Salut, c'est John pour ParlonsLinux. Aujourd'hui, comme vous avez pu le lire dans les titres 2 00:00:05,720 --> 00:00:12,880 de l'épisode, je vais vous parler d'alias et de fonctions dans Bash, la cuisine du terminal. 3 00:00:12,880 --> 00:00:20,680 Pourquoi la cuisine ? Parce que c'est quelque chose qui est universel. Tout le monde a besoin 4 00:00:20,680 --> 00:00:28,560 de se nourrir et donc tout le monde a sa définition de la cuisine. Je vais donc tenter l'explication 5 00:00:28,560 --> 00:00:36,640 des alias et des fonctions en imageant avec la cuisine. Ah, le terminal, un monde mystérieux 6 00:00:36,640 --> 00:00:41,320 où les commandes s'enchaînent plus vite qu'un chef étoilé en plein coup de feu. 7 00:00:41,320 --> 00:00:46,640 Mais avant eux, tapez toujours les mêmes commandes, c'est aussi amusant que déplucher 8 00:00:46,640 --> 00:00:51,920 10 kilos de pommes de terre à la main. Heureusement, dans notre cuisine numérique, nous avons des 9 00:00:51,920 --> 00:00:57,080 couteaux suisses, des alias et les fonctions. Aujourd'hui, on va voir comment ils peuvent 10 00:00:57,160 --> 00:01:02,800 simplifier la vie comme un bon robot multifonction en cuisine. Sortez vos tablis, c'est parti ! 11 00:01:02,800 --> 00:01:08,160 Un alias, c'est un peu comme une recette rapide. Plutôt que de répéter les mêmes gestes, 12 00:01:08,160 --> 00:01:15,160 on prépare tout en avance et on ne fait qu'exécuter. Du coup, ça fonctionne comment un alias ? Eh 13 00:01:15,160 --> 00:01:19,880 bien, un alias, c'est une petite commande qui remplace une plus grande, comme une sauce 14 00:01:19,880 --> 00:01:24,920 toute prête qui évite de tout refaire à la main. Je vais prendre par exemple l'alias 15 00:01:24,920 --> 00:01:32,920 LL qui existe dans de nombreuses distributions par défaut. Cette alias est en fait la commande 16 00:01:32,920 --> 00:01:42,720 ls-la. Et voilà, à chaque fois, au lieu de taper ls-la, vous tapez juste ll. Ceci caractérise 17 00:01:42,720 --> 00:01:48,360 les alias. C'est un gain de temps, plus besoin de tour taper. Il y a une standardisation, 18 00:01:48,360 --> 00:01:53,160 on utilise toujours les mêmes commandes sans risque d'erreur. Une facilité, comme une 19 00:01:53,160 --> 00:01:59,280 bonne recette. Il faut enregistrer, on l'a toujours en mémoire. Du coup, comment et où 20 00:01:59,280 --> 00:02:09,600 on définit les alias ? Là, sur cette partie-là, il y a des similitudes avec l'épisode précédent 21 00:02:09,600 --> 00:02:14,600 qui étaient sur les variables d'environnement. Certaines commandes utilisées sont les mêmes 22 00:02:14,600 --> 00:02:19,360 et donc si ce n'est pas encore fait, je vous invite à écouter l'épisode sur les variables 23 00:02:19,360 --> 00:02:24,560 d'environnement. Mais alors, après cet avertissement, cette information donnée, 24 00:02:24,560 --> 00:02:29,280 comment on définit les variables et où ? Déjà, il y a plusieurs façons de créer un alias, 25 00:02:29,280 --> 00:02:33,840 comme il y a plusieurs façons de cuisiner, rapides ou bien préparées. Vous avez d'abord 26 00:02:33,840 --> 00:02:41,440 les alias temporaires. Oui, le nom vous rappelle l'épisode précédent, mais restons concentrés, 27 00:02:41,440 --> 00:02:47,240 comme la tomate. Voilà, la blague est faite. Et donc l'alias temporaire, c'est l'équivalent 28 00:02:47,240 --> 00:02:52,000 de rajouter un peu d'épices dans votre plat. Ça change le goût, mais ça ne dure que pour 29 00:02:52,000 --> 00:02:59,680 le repas. Votre recette reste à changer. Je prenais l'exemple de l'alias LL. Si on veut 30 00:02:59,680 --> 00:03:05,120 définir cet alias dans le cas que vous ne l'avez pas dans votre distribution, et bien, 31 00:03:05,120 --> 00:03:11,640 la commande est simple. Pour créer cet alias de manière temporaire, il suffit d'écrire 32 00:03:11,640 --> 00:03:20,280 l'alias, un espace, LL, qui est donc la commande de substitution, les simples guillemets LS-LA, 33 00:03:20,280 --> 00:03:27,240 on ferme le guillet. L'alias disparaît dès que vous fermez le terminal. L'alias temporaire 34 00:03:27,240 --> 00:03:33,960 est toujours à utiliser afin de tester. Et également lorsque vous voulez ajouter de 35 00:03:33,960 --> 00:03:41,040 nouveaux alias, ce qui revient à tester en effet. Il y a ensuite l'alias permanent. Là, 36 00:03:41,040 --> 00:03:47,720 on parle de conservation. Pour garder un alias, on ajoute à notre fichier .bashrc ou bashalias. 37 00:03:47,720 --> 00:03:52,880 C'est comme une bonne sauce qu'on prépare à l'avance ou qu'on achète en avance. Pour 38 00:03:52,880 --> 00:04:00,520 ce faire là, la commande est assez simple. Nous allons récupérer la commande précédemment citée 39 00:04:00,520 --> 00:04:08,440 qui permet de créer un alias temporaire, auquel on va ajouter en début un écho qui permet 40 00:04:08,440 --> 00:04:15,600 d'écrire, suivi de double guillemets. Là, on va insérer la commande précédente, puis on va 41 00:04:15,600 --> 00:04:22,960 fermer les guillemets, ajouter deux signes plus grands que et rediriger soit vers le fichier 42 00:04:22,960 --> 00:04:30,480 .bashrc soit vers le fichier bashalias. Dans l'exemple de la défunt de commodité, 43 00:04:30,480 --> 00:04:36,760 je vais sélectionner le .bashrc. Une fois cela fait, c'est bon. Mais si vous voulez utiliser 44 00:04:36,760 --> 00:04:42,480 tout de suite cet alias sans ouvrir un nouveau terminal, il vous faut le sourcer, ce qui veut 45 00:04:42,480 --> 00:04:50,120 dire utiliser la commande source, suivi de l'emplacement de votre fichier .bashrc ou bashalias. 46 00:04:50,320 --> 00:04:55,240 Il y a des bonnes pratiques pour les alias. Ne pas les faire trop court notamment, parce que 47 00:04:55,240 --> 00:05:01,480 c'est un peu comme appeler tous vos plats de la soupe, on ne sait plus comment. Éviter des 48 00:05:01,480 --> 00:05:11,080 alias dangereux, ça c'est plus du savoir-vive je dirais. Typiquement, faire un alias RM qui 49 00:05:11,080 --> 00:05:18,200 renvoirait à la commande exacte RM-RF, c'est l'équivalent de remplacer votre couteau de cuisine 50 00:05:18,200 --> 00:05:23,800 par une tronçonneuse. Et bien sûr tester avant d'enregistrer ce que je vous disais au début, 51 00:05:23,800 --> 00:05:30,200 utiliser des variables temporaires, vérifier que ça correspond à votre utilisation, donc si 52 00:05:30,200 --> 00:05:36,880 on reprend le thème de la cuisine, si ça correspond à votre goût, et comme une nouvelle recette, 53 00:05:36,880 --> 00:05:41,960 on s'assure que ça fonctionne avant de pouvoir l'aider. Très bien, nous avons vu ce qu'était 54 00:05:41,960 --> 00:05:48,120 un alias, comment l'utiliser et le définir. Maintenant, on va passer à la cuisine gastronomique 55 00:05:48,120 --> 00:05:54,480 du terminal, la fonction bash. Car oui, si les alias sont comme des recettes rapides, 56 00:05:54,480 --> 00:06:01,280 les fonctions sont carrément des plats élaborés, avec des étapes et des ajustements possibles. Elles 57 00:06:01,280 --> 00:06:06,840 permettent de créer de vrais automatismes, comme un assistant en cuisine. Comment ça fonctionne 58 00:06:06,920 --> 00:06:12,320 les fonctions dans bash ? Une fonction, c'est une suite de commandes regroupées sous un seul 59 00:06:12,320 --> 00:06:17,640 nom. Contrairement aux alias, elles peuvent accepter des arguments et exécuter plusieurs 60 00:06:17,640 --> 00:06:23,160 commandes. Et là, on pourrait me dire, mais pourquoi utiliser des fonctions plutôt que des alias ? 61 00:06:23,160 --> 00:06:30,600 Toujours, je vais reprendre des images de cuisine, les alias sont comme des plats déjà préparés, 62 00:06:30,600 --> 00:06:36,720 rapides mais limités. Les fonctions, c'est comme cuisiner vous-même avec vos propres ajustements. 63 00:06:36,720 --> 00:06:42,160 Également, elles permettent d'exécuter plusieurs commandes et d'utiliser des structures de contrôle, 64 00:06:42,160 --> 00:06:48,040 typiquement IF, FOR ou WHILE, ce que nous verrons dans un prochain épisode. 65 00:06:48,040 --> 00:06:55,120 Du coup, comment on fait pour définir une fonction et surtout où ? Les fonctions peuvent être 66 00:06:55,120 --> 00:07:02,480 définies directement dans le terminal, en guise de fonctions temporaires ou dans votre bash RC, 67 00:07:02,480 --> 00:07:11,120 pour des fonctions définitives. La définition d'une fonction en bash, par où commencer ? 68 00:07:11,120 --> 00:07:18,880 On va garder la recette, comme une recette, elle attend un ingrédient, dans ce cas un argument, 69 00:07:18,880 --> 00:07:25,160 et ensuite affiche un message ou exécute une action. Je vais vous donner l'exemple d'une 70 00:07:25,160 --> 00:07:32,080 fonction, je vais vous la décrire, elle sera également en note d'épisode, afin que vous puissiez 71 00:07:32,080 --> 00:07:39,280 la tester. Cette fonction, on va l'appeler mafonction, n'est-ce pas ? Et comme vous avez suivi 72 00:07:39,280 --> 00:07:44,280 l'épisode sur les variables d'environnement, vous savez qu'entre ma et fonctions, il n'y a pas 73 00:07:44,280 --> 00:07:51,040 d'espace mais un underscore. Donc voilà, ça c'est le nom de la fonction, la fonction s'appelle mafonction. 74 00:07:51,040 --> 00:07:57,680 Ensuite on va ouvrir des parenthèses, les fermer, mettre un espace et ensuite ouvrir une accolade. 75 00:07:57,680 --> 00:08:04,640 Et pour un exemple assez simple, nous allons simplement utiliser la commande d'écho, suivi 76 00:08:04,640 --> 00:08:12,160 une chaîne de caractère et enfin l'argument. Donc écho, on ouvre les guillemets, bonjour, 77 00:08:12,160 --> 00:08:20,680 virgule, dollar, un point d'exclamation parce que soyons fous, et on ferme les guillemets. 78 00:08:20,680 --> 00:08:26,600 Ensuite, une fois cela fait, on peut fermer la collade. Qu'est-ce qui se passe dans cette 79 00:08:26,600 --> 00:08:33,920 fonction ? Lorsque vous la rentrez, rien du tout. Maintenant, si vous rappelez cette commande, 80 00:08:33,920 --> 00:08:41,360 cette fonction, du moins pardon, en écrivant mafonction, en mettant un espace, puis en mettant 81 00:08:41,360 --> 00:08:48,000 votre prénom et en appuyant sur entrer, vous verrez que le terminal vous répond à un joyeux 82 00:08:48,000 --> 00:08:55,400 bonjour, virgule, votre prénom, suivi d'un point d'exclamation. C'est un exemple assez simpliste 83 00:08:55,400 --> 00:09:02,080 et qui permet juste de vous faire pratiquer. En soit, une telle fonction n'a que très peu 84 00:09:02,080 --> 00:09:12,800 d'intérêt, mais on peut complexifier la chose ou voir la rendre plus utile. Il y a une liste 85 00:09:12,800 --> 00:09:21,880 d'arguments disponibles dans les fonctions bash et plusieurs variables spéciales permettent 86 00:09:21,880 --> 00:09:29,040 de gérer les arguments et les informations du script. $1, $2, $3, etc. correspondent aux 87 00:09:29,040 --> 00:09:36,920 arguments positionnels, ce qui veut dire ce qui suit après l'appel de la fonction, premier, 88 00:09:36,920 --> 00:09:44,320 deuxième, etc. Vous avez le $10 qui, lui, est le nombre total d'arguments passés à la fonction. 89 00:09:44,320 --> 00:09:50,800 Vous avez le $' qui liste tous les arguments sous forme de mots distincts. Vous avez le 90 00:09:50,800 --> 00:10:00,080 $' qui liste tous les arguments sous forme d'une seule chaîne de textes. Vous avez le $' qui est le 91 00:10:00,080 --> 00:10:07,520 cas de retour de la dernière commande exécutée. Vous avez le $' qui donne le process ID du 92 00:10:07,520 --> 00:10:16,400 script en cours d'exécution. Vous avez le $' qui est le PID du dernier processus exécuté en arrière 93 00:10:16,400 --> 00:10:24,120 plan. Vous avez le $0 qui est le nom du script ou de la fonction appelée. Un exemple, toujours dans 94 00:10:24,120 --> 00:10:33,920 les notes, qui est ma fonction, ne changeons pas le nom, écho, nom du script, $0, on ferme les guillemets, 95 00:10:33,920 --> 00:10:41,960 on passe à la ligne, écho, premier argument, $1, on ferme les guillemets, on passe à la ligne, 96 00:10:41,960 --> 00:10:51,000 écho, nombre total d'arguments, $, on ferme les guillemets, on revient à la ligne, on ferme avec 97 00:10:51,000 --> 00:10:56,440 une accolade. Il y a des bonnes pratiques pour les fonctions également. Il faut ajouter des 98 00:10:56,440 --> 00:11:02,160 commentaires pour comprendre ce qu'elles font. En soi, quand c'est des fonctions simples, on n'en a 99 00:11:02,160 --> 00:11:09,360 pas forcément besoin, surtout si la fonction a un nom qui correspond à ce qu'elle fait, et ne pas 100 00:11:09,360 --> 00:11:17,080 tout mélanger. Une fonction doit faire une seule page. Et bien sûr, testez sur votre terminal avant 101 00:11:17,080 --> 00:11:23,880 d'enregistrer votre fonction en dur dans le bas chassé. En exemple d'utilisation des alias pratiques 102 00:11:23,880 --> 00:11:31,400 pour gagner du temps, donc il y a le alias ll qui voit tous les fichiers comme une vue panoramique en 103 00:11:31,400 --> 00:11:39,440 cuisine. Vous pouvez également faire un greppe, un alias greppe qui lui aussi selon les distributions 104 00:11:39,440 --> 00:11:46,440 est déjà effectif, qui ajoute des couleurs pour mieux voir les résultats avec la commande greppe. 105 00:11:46,440 --> 00:11:54,920 Vous avez un alias cls par exemple qui remplacerait la commande clear, qui permet de nettoyer le 106 00:11:54,920 --> 00:12:01,760 terminal. Comme vous avez écouté l'épisode sur les raccourcis et les contrôles du terminal, 107 00:12:01,760 --> 00:12:08,280 vous savez qu'au lieu de taper clear, vous pouvez très bien faire un contrôle l avec votre clavé. 108 00:12:08,280 --> 00:12:18,160 Et également, afin que ce soit un petit peu plus compréhensif, dans un premier temps je vous fournirai 109 00:12:18,160 --> 00:12:23,800 dans les notes une fonction qui devine un nombre, généralement appelé l'âge du capitaine, 110 00:12:23,800 --> 00:12:33,040 on utilise des variables que vous avez déjà entendu si vous avez écouté l'épisode sur 111 00:12:33,040 --> 00:12:40,280 les variables d'environnement. Cette fonction sera un petit peu comme un jeu où l'ordinateur 112 00:12:40,280 --> 00:12:46,800 choisit un ingrédient secret et vous devez deviner lequel. Les alias et les fonctions bash sont 113 00:12:46,800 --> 00:12:53,160 comme des astuces de cuisine, qui rendent le travail plus rapide et plus efficace en automatisant 114 00:12:53,160 --> 00:12:59,160 certaines tâches. Vous gagnez du temps à éviter les erreurs, expérimenter, tester et 115 00:12:59,160 --> 00:13:03,440 troubler vos propres commandes. A bientôt pour Parlons Linux à faire.