Outils pour utilisateurs

Outils du site


issue177:c_c

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue177:c_c [2022/01/31 08:34] d52frissue177:c_c [2022/02/01 16:03] (Version actuelle) andre_domenech
Ligne 3: Ligne 3:
 A lot of time I hear, it is difficult to learn shell scripting. Sure, bash is not the friendliest of syntaxes, but sometimes you just need a question answered and a small shell script will do. The question may be something arbitrary like: Do I have any money? If you are a wage serf like me, the only time you have money is when you have been paid. So to simplify the question, I might ask, have I been paid? Now that is a yes or no question, the kind the computer likes. Yes or no questions translate easily into true or false. There is a dilemma in this question, as the computer has no access to my bank account and therefore has no idea if I have been paid. However, I can do the next best thing, check if it is ‘payday’. The computer has no idea what ‘payday’ is, but we do, it is on the 27th of each month. We have a target and a yes or no question, so we can write a simple script. ** A lot of time I hear, it is difficult to learn shell scripting. Sure, bash is not the friendliest of syntaxes, but sometimes you just need a question answered and a small shell script will do. The question may be something arbitrary like: Do I have any money? If you are a wage serf like me, the only time you have money is when you have been paid. So to simplify the question, I might ask, have I been paid? Now that is a yes or no question, the kind the computer likes. Yes or no questions translate easily into true or false. There is a dilemma in this question, as the computer has no access to my bank account and therefore has no idea if I have been paid. However, I can do the next best thing, check if it is ‘payday’. The computer has no idea what ‘payday’ is, but we do, it is on the 27th of each month. We have a target and a yes or no question, so we can write a simple script. **
  
-La plupart d'entre nous ne réfléchissent pas à deux fois lorsqu'ils tapent sur un terminal, il est juste là. Ce qui se passe en fait, c'est que vous tapez des commandes dans un shell qui interprète vos commandes. Par défaut, Ubuntu est livré avec bash, mais vous pouvez en installer un autre si vous le souhaitez. Je vais me concentrer sur bash. La raison en est que si vous avez l'occasion d'utiliser des serveurs ou des conteneurs sur Internet, il y a de fortes chances que ce soit bash.+La plupart d'entre nous ne réfléchissent pas à deux fois lorsqu'ils tapent sur un terminal, il existe, c'est tout. Ce qui se passe en fait, c'est que vous tapez des commandes dans un shell qui interprète vos commandes. Par défaut, Ubuntu est livré avec bash, mais vous pouvez en installer un autre si vous le souhaitez. Je vais me concentrer sur bash, parce quesi vous avez l'occasion d'utiliser des serveurs ou des conteneurs sur Internet, il y a de fortes chances que ce soit bash.
  
-J'entends souvent dire qu'il est difficile d'apprendre les scripts shell. Bien sûr, bash n'est pas la plus conviviale des syntaxes, mais parfois vous avez juste besoin de répondre à une question et un petit script shell fera l'affaire. La question peut être quelque chose d'arbitraire comme : Ai-je de l'argent ? Si vous êtes un serf salarié comme moi, le seul moment où vous avez de l'argent est lorsque vous avez été payé. Donc, pour simplifier la question, je pourrais demander : est-ce que j'ai été payé ? Voilà une question par oui ou par non, le genre de question que l'ordinateur apprécie. Les questions par oui ou par non se traduisent facilement par vrai ou faux. Il y a un dilemme dans cette question, car l'ordinateur n'a pas accès à mon compte bancaire et ne sait donc pas si j'ai été payé. Cependant, je peux faire la meilleure chose suivante : vérifier si c'est le jour de la paie. L'ordinateur n'a aucune idée de ce qu'est un « jour de paie », mais nous le savons, c'est le 27 de chaque mois. Nous avons un objectif et une question à laquelle il faut répondre par oui ou par non, ce qui nous permet d'écrire un script simple.+J'entends souvent dire qu'il est difficile d'apprendre à faire des scripts shell. Bien sûr, bash n'est pas la plus conviviale des syntaxes, mais parfois vous avez juste besoin de répondre à une question et un petit script shell fera l'affaire. La question peut être quelque chose d'arbitraire comme : Ai-je de l'argent ? Si vous êtes un serf salarié comme moi, le seul moment où vous avez de l'argent est lorsque vous avez été payé. Donc, pour simplifier la question, je pourrais demander : est-ce que j'ai été payé ? Voilà une question à laquelle on répond par oui ou par non, le genre de question que l'ordinateur apprécie. Les questions par oui ou par non se traduisent facilement par vrai ou faux. Il y a un dilemme dans cette question, car l'ordinateur n'a pas accès à mon compte bancaire et ne sait donc pas si j'ai été payé. Cependant, une manière alternative de résoudre ce problème est de vérifier si c'est le jour de la paie. L'ordinateur n'a aucune idée de ce qu'est un « jour de paie », mais nous le savons, c'est le 27 de chaque mois. Nous avons un objectif et une question à laquelle il faut répondre par oui ou par non, ce qui nous permet d'écrire un script simple.
  
  
Ligne 20: Ligne 20:
 Let’s open another terminal or tab and test out our ‘question’. This is important, if your command does not work in bash, it will not work in your script. ** Let’s open another terminal or tab and test out our ‘question’. This is important, if your command does not work in bash, it will not work in your script. **
  
-Ouvrez ces terminaux et amusez-vous comme des fous. Tapez : +Ouvrez ces terminaux et amusons-nous bêtement. Tapez : 
  
 nano gotmoney.sh  nano gotmoney.sh 
Ligne 26: Ligne 26:
 et appuyez sur Entrée. et appuyez sur Entrée.
  
-Comme vous le savez, tous les scripts shell nécessitent un chemin vers le shell. Nous commençons donc par ajouter : #!/bin/bash -à l'en-tête de notre script. Nous pouvons utiliser l'instruction if de bash pour poser la question : « Si aujourd'hui est le 27 ... VRAI ou FAUX » alors nous avons été payés ou nous n'avons pas été payés. L'instruction if de bash fait cette astuce astucieuse d'ouvrir avec le mot « if » et de fermer avec « fi » (l'inverse). Son fonctionnement est le suivant : SI VRAI, alors faites quelque chose, sinon ne faites rien. +Comme vous le savez, tous les scripts shell nécessitent un chemin vers le shell. Nous commençons donc par ajouter : #!/bin/bash  -à l'en-tête de notre script. Nous pouvons utiliser l'instruction if de bash pour poser la question : « Si aujourd'hui est le 27 ... VRAI ou FAUX » alors nous avons été payés ou nous n'avons pas été payés. L'instruction if de bash s'ouvre astucieusement avec le mot « if » et se ferme avec « fi » (l'inverse). Son fonctionnement est le suivant : SI VRAI, alors faites quelque chose, sinon ne faites rien. 
  
-Voici donc notre schéma, nous devons maintenant formuler la question. C'est ici que vous devez réfléchir à ce que vous voulez. Rappelez-vous ; mal ficelé au début, mal ficelé la fin.+Voici donc notre schéma, nous devons maintenant formuler la question. C'est ici que vous devez réfléchir à ce que vous voulez. Rappelez-vous ; mal ficelé au début, mal ficelé la fin (« GIGO, garbage in, garbage out »).
  
 Ouvrons un autre terminal ou onglet et testons notre « question ». C'est important, si votre commande ne fonctionne pas dans bash, elle ne fonctionnera pas dans votre script. Ouvrons un autre terminal ou onglet et testons notre « question ». C'est important, si votre commande ne fonctionne pas dans bash, elle ne fonctionnera pas dans votre script.
Ligne 45: Ligne 45:
 Let us dissect that query: IF [ TRUE ]; then blah...** Let us dissect that query: IF [ TRUE ]; then blah...**
  
-Tout d'abord, voyons ce que sont les commutateurs, tapez : man date et appuyez sur entrée. En descendant un peu, vous verrez - « FORMAT controls the output. » (Le FORMAT contrôle la sortie).+Tout d'abord, voyons ce que sont les commutateurs, tapez : man date  et appuyez sur entrée. En descendant un peu, vous verrez - « FORMAT controls the output. » (Le FORMAT contrôle la sortie).
  
-Après tout, je ne suis intéressé que par le jour, car je suis payé le 27 de chaque mois et donc le mois, les heures et les secondes ne me sont d'aucune utilité. Si vous ne comprenez pas ce dont je parle, tapez simplement : date et appuyez sur la touche Entrée.+Après tout, je ne suis intéressé que par le jour, car je suis payé le 27 de chaque mois et donc le mois, les heures et les secondes ne me sont d'aucune utilité. Si vous ne comprenez pas ce dont je parle, tapez simplement : date  et appuyez sur la touche Entrée.
  
-Selon la page de manuel, « %d » est ce que je recherche car il représente le jour. Testons cela, tapez : date %d et appuyez sur entrée. Que s'est-il passé ? Vous n'avez pas prêté attention à la partie Synopsis ; il est écrit « +FORMAT ». Essayez maintenant : date +%d et appuyez sur la touche Entrée. Super, maintenant nous avons quelque chose qui fonctionne. Dans le dernier numéro, nous avons appris à connaître la variable $. Il est maintenant temps de l'utiliser. Donc... si une condition est vraie, faites quelque chose. (La description technique d'une instruction if, hehe)+Selon la page du manuel, « %d » est ce que je recherche car il représente le jour. Testons cela, tapez : date %d  et appuyez sur entrée. Que s'est-il passé ? Vous n'avez pas prêté attention à la partie Synopsis ; il est écrit « +FORMAT ». Essayez maintenant : date +%d et appuyez sur la touche Entrée. Super, maintenant nous avons quelque chose qui fonctionne. Dans le dernier numéro, nous avons appris à connaître la variable $. Il est maintenant temps de l'utiliser. Donc... si une condition est vraie, faites quelque chose. (La description technique d'une instruction if, héhé.)
  
-Effacez cet onglet ou le second terminal et tapez : if [ $(date +%d) -eq 27 ] ; then echo « Vite, dépensez-en avant que votre femme ne le voie !! » ; fi puis appuyez sur Entrée.+Effacez cet onglet ou le second terminal et tapez : if [ $(date +%d) -eq 27 ] ; then echo "Vite, dépensez-en avant que votre femme ne le voie !!"; fi  puis appuyez sur Entrée.
  
 Que s'est-il passé ? Eh bien, à moins qu'aujourd'hui soit le 27, vous n'obtiendrez aucun résultat. Rappelez-vous, si la condition est FALSE, rien ne se passe.  (Else ne fait pas partie de cette présentation). Que s'est-il passé ? Eh bien, à moins qu'aujourd'hui soit le 27, vous n'obtiendrez aucun résultat. Rappelez-vous, si la condition est FALSE, rien ne se passe.  (Else ne fait pas partie de cette présentation).
  
-Décortiquons cette requête : IF [ TRUE ] ; then blah...+Décortiquons cette requête : IF [ TRUE ]; then blah...
  
  
Ligne 75: Ligne 75:
 Did I make a mistake? misc@fulcirclemagazine.org** Did I make a mistake? misc@fulcirclemagazine.org**
  
-La partie [ TRUE ] est ensuite décomposée en une question pour déterminer si elle est vraie ou fausse. Si notre variable « date +%d » (elle est entre parenthèses car il ne s'agit pas d'un mot) -eq (est égale à) 27. Nous utilisons -eq comme opérateur de comparaison, comme -gt pour « plus grand que » et -lt pour « moins grand que ». Vous les avez appris à l'école ;vous devriez donc les connaître maintenant. Si vous n'êtes pas sûr, consultez :+La partie [ TRUE ] est ensuite décomposée en une question pour déterminer si elle est vraie ou fausse. Si notre variable « date +%d » (elle est entre parenthèses car il ne s'agit pas d'un mot) -eq (est égale à) 27. Nous utilisons -eq comme opérateur de comparaison, comme -gt pour « plus grand que » et -lt pour « moins grand que ». Vous les avez appris à l'école ; vous devriez donc les connaître maintenant. Si vous n'êtes pas sûr, consultez :
 https://tldp.org/LDP/abs/html/comparison-ops.html https://tldp.org/LDP/abs/html/comparison-ops.html
  
-N'oubliez pas non plus les espaces entre crochets, car il s'agit de commandes. « [ » et "« [[ » (nous y reviendrons plus tard, lorsque nous aborderons les tests). +N'oubliez pas non plus les espaces entre crochets, car il s'agit de commandes. « [ » et « [[ » (nous y reviendrons plus tard, lorsque nous aborderons les tests). 
  
-Avant que quelqu'un ne fasse des commentaires, je ne suis pas un singe de code, cela se lit plus facilement pour moi que tous les espaces blancs inutiles.+Avant que quelqu'un ne fasse des commentaires, je ne suis pas un singe codeur, cela se lit plus facilement pour moi que tous les espaces blancs inutiles.
  
-Sauvegardez-le et rendez le script exécutable. (Vous devriez le savoir maintenant)+Sauvegardez-le et rendez le script exécutable. (Vous devriez savoir comment faire maintenant.)
  
-Juste pour tester la validité, essayez de changer le 27 en date d'aujourd'hui et voyez si l'écho se déclenche.  +Juste pour tester sa validité, essayez de changer le 27 en date d'aujourd'hui et voyez si l'écho se déclenche.  
  
 Félicitations ! Vous avez écrit un script ! Vous pouvez le mettre dans cron et le faire déclencher une fois par jour. Ainsi, lorsque le jour de la paie arrive, vous recevrez un rappel amical ! Félicitations ! Vous avez écrit un script ! Vous pouvez le mettre dans cron et le faire déclencher une fois par jour. Ainsi, lorsque le jour de la paie arrive, vous recevrez un rappel amical !
issue177/c_c.1643614493.txt.gz · Dernière modification : 2022/01/31 08:34 de d52fr