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