Outils pour utilisateurs

Outils du site


issue206:c_c

Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
issue206:c_c [2024/06/29 16:30] – créée auntieeissue206:c_c [2024/07/01 17:04] (Version actuelle) andre_domenech
Ligne 1: Ligne 1:
-One of our NOC engineers is writing some Linux exam/test/whatever. We were having a chat and he confessed not knowing how test worked. I thought about it and realised I have never typed test at the command line either. He showed me what he was looking at: https://opensource.com/article/22/10/test-command-linux +**One of our NOC engineers is writing some Linux exam/test/whatever. We were having a chat and he confessed not knowing how test worked. I thought about it and realised I have never typed test at the command line either. He showed me what he was looking at: https://opensource.com/article/22/10/test-command-linux 
  
 I had to read it twice, to figure out what they were talking about. The very last piece hit me, back in the day, I got caught with the [[  ]] command, and it took me a few retries to grok it. It turns out it is something I have used often, never knowing that it was also a command (named test). Before I go on “my way” of doing things, let's look at this from the bottom up. I had to read it twice, to figure out what they were talking about. The very last piece hit me, back in the day, I got caught with the [[  ]] command, and it took me a few retries to grok it. It turns out it is something I have used often, never knowing that it was also a command (named test). Before I go on “my way” of doing things, let's look at this from the bottom up.
Ligne 5: Ligne 5:
 So if you are a newbie and someone tells you to read the man page, you have my permission to spit in their coffee. (OK don’t) Seriously, the man page is about as much help to a newbie as a pin in a rainstorm if you don’t know what test does.  So if you are a newbie and someone tells you to read the man page, you have my permission to spit in their coffee. (OK don’t) Seriously, the man page is about as much help to a newbie as a pin in a rainstorm if you don’t know what test does. 
  
 +It says nothing... I need you to think of it as a comparison command in bash that nets you a boolean. That’s it. To understand where this comes from, you need to know a bit about programming. Not much, just enough to hurt yourself. You see, when a C program exits cleanly, without error, your exit status is 0. If not, it is not 0. (make sense?) The same happens here, you evaluate or compare two things and you get 0 or 1. There is no hidden meaning or anything esoteric. It’s true or false. If you want to see that result, you type: echo $?**
  
-It says nothing... I need you to think of it as a comparison command in bash that nets you booleanThat’s itTo understand where this comes from, you need to know bit about programmingNot much, just enough to hurt yourself. You see, when a C program exits cleanly, without error, your exit status is 0. If not, it is not 0. (make sense?) The same happens here, you evaluate or compare two things and you get 0 or 1. There is no hidden meaning or anything esoteric. It’s true or false. If you want to see that result, you type: echo $?+L'un de nos ingénieurs NOC (Network Operation Center - Centre opérationnel de réseau) est en train de rédiger un examen/test/quoi que ce soit sur LinuxNous avons discuté et il m'avoué qu'il ne savait pas comment test fonctionnaitJ'ai réfléchi et j'ai réalisé que je n'avais jamais tapé test en ligne de commande non plusIl m'montré ce qu'il regardait : https://opensource.com/article/22/10/test-command-linux 
  
-Go ahead, open a terminal and type it to see the default value. I’m not going to tell you what it is, you need to see it for yourself. OK, with that out of the way, let’s use it to see how it works. Type: +J'ai dû le lire deux fois pour comprendre de quoi ils parlaient. La toute dernière partie m'a frappé : à l'époque, je m'étais fait prendre avec la commande [[ ]], et il m'a fallu quelques tentatives pour la comprendre. Il s'avère que c'est quelque chose que j'ai souvent utilisé, sans jamais savoir que c'était aussi une commande (nommée test). Avant d'expliquer « ma façon » de faire les choses, regardons les choses de bas en haut. 
 + 
 +Si vous êtes un débutant et que quelqu'un vous dit de lire la page man, vous avez la permission de cracher dans son café. (OK, ne le faites pas.) Sérieusement, la page man est aussi utile à un débutant qu'une épingle sous une pluie diluvienne si vous ne savez pas ce que fait test.  
 + 
 +test ne dit rien... Vous devez penser que c'est une commande de comparaison dans bash qui vous donne un booléen. C'est tout. Pour comprendre d'où cela vient, vous devez connaître un peu la programmation. Pas grand chose, juste assez pour vous faire mal. Vous voyez, quand un programme C se termine proprement, sans erreur, votre état de sortie est 0. Sinon, ce n'est pas 0. (vous comprenez ?) Il en va de même ici, vous évaluez ou comparez deux choses et vous obtenez 0 ou 1. Il n'y a pas de sens caché ou quoi que ce soit d'ésotérique. C'est vrai ou faux. Si vous voulez voir ce résultat, vous tapez : echo $? 
 + 
 + 
 +**Go ahead, open a terminal and type it to see the default value. I’m not going to tell you what it is, you need to see it for yourself. OK, with that out of the way, let’s use it to see how it works. Type: 
  
 test 1 eq 2 ; echo $? test 1 eq 2 ; echo $?
Ligne 22: Ligne 30:
 [ 1 -eq 1 ] ; echo $? [ 1 -eq 1 ] ; echo $?
  
-mmm... Oh and be aware that there is a space after “[“ and one before “]” as,  with “[[“ it is then treated as a command. So what happened? Yes same pudding, different sauce. Go ahead and leave out the space, so you can see what the error looks like. No, really, this is important. Familiarity breeds contempt, if you are used to the error, you know how to fix it.+mmm... Oh and be aware that there is a space after “[“ and one before “]” as,  with “[[“ it is then treated as a command. So what happened? Yes same pudding, different sauce. Go ahead and leave out the space, so you can see what the error looks like. No, really, this is important. Familiarity breeds contempt, if you are used to the error, you know how to fix it.**
  
-So the syntax is, we compare something in the “box” and we can then do something (or nothing) with the result (0 or 1). +Allez-y, ouvrez un terminal et tapez-le pour voir la valeur par défaut. Je ne vais pas vous dire ce que c'est, vous devez le voir par vous-même. OK, cela étant fait, utilisons-le pour voir comment ça fonctionne. Tapez :  
 + 
 +test 1 eq 2 ; echo $? 
 + 
 +Oui, je sais que c'est trop simplifié, mais vous allez devoir le voir de cette façon (la plus simple). Vous devriez avoir obtenu une erreur. Regardez la sortie. Maintenant, faisons les choses correctement et regardons cette sortie (le terme approprié est « exit status », l'état de sortie), tapez :  
 + 
 +test 1 -eq 2 ; echo $? 
 + 
 +C'est là que la page de manuel est utile, car elle vous aide à vous souvenir de tous les opérateurs de comparaison. Je ne vais pas les énumérer ici, vous avez un terminal. Si vous êtes de langue maternelle anglaise, vous devriez les connaître. Si ce n'est pas le cas, vous avez maintenant l'opportunité de les apprendre. 
 + 
 +Ce que je ne savais pas, c'est que j'utilise test depuis toujours, mais pas de cette manière. Ouvrez votre terminal et tapez :  
 + 
 +[ 1 -eq 1 ] ; echo $? 
 + 
 +mmm... Oh et attention, il y a une espace après « [ » et une avant « ] » car, avec « [[ », c'est traité comme une commande. Alors, que s'est-il passé ? Oui, même pudding, sauce différente. Allez-y, supprimez l'espace, pour que vous puissiez voir à quoi ressemble l'erreur. Non, vraiment, c'est important. La familiarité engendre le mépris ; si vous êtes habitué à l'erreur, vous savez comment la corriger. 
 + 
 + 
 +**So the syntax is, we compare something in the “box” and we can then do something (or nothing) with the result (0 or 1). 
  
 Let’s do a very simple example, type:  Let’s do a very simple example, type: 
Ligne 53: Ligne 78:
 Type:  Type: 
  
-[ -z “fcm”] ; echo $?+[ -z “fcm”] ; echo $?**
  
-You are all smart people, so I’m not going to pull out the wax crayons here. +La syntaxe est donc la suivante : nous comparons quelque chose dans la « boîte » et nous pouvons ensuite faire quelque chose (ou rien) avec le résultat (0 ou 1).  
 + 
 +Prenons un exemple très simple : tapez :  
 + 
 +[ 6 -gt 7 ] && echo "it is !" || echo "nope..." 
 + 
 +Maintenant, recommencez, en intervertissant le 6 et le 7. Que s'est-il passé ? Vous voyez pourquoi j'ai dit que c'est une comparaison qui vous donne un booléen ?  
 + 
 +NOTE : si vous êtes trop paresseux pour taper et copier/coller, rappelez-vous que this: « is not this: ». 
 + 
 +Il s'agissait de nombres entiers, mais vous pouvez également le faire pour des chaînes de caractères. Pour les chaînes de caractères, nous pouvons utiliser « = » et « != » 
 +Tapez :  
 + 
 +[ “FCM” != “fcm” ] ; echo $? 
 + 
 +Si vous n'avez pas eu ces t-shirts avant; != est bizarre parce que c'est vrai, vous les aurez maintenant. 
 + 
 +Nous pouvons également utiliser les opérateurs « zéro » et "non-zéro", « -z » et « -n » 
 + 
 +Tapez :  
 + 
 +[ -n “fcm” ] ; echo $? 
 + 
 +Tapez :  
 + 
 +[ -z “fcm” ] ; echo $? 
 + 
 + 
 +**You are all smart people, so I’m not going to pull out the wax crayons here. 
  
 Let’s take it one step further, we can use it on files and folders, why? Because we get a boolean back. Type:  Let’s take it one step further, we can use it on files and folders, why? Because we get a boolean back. Type: 
Ligne 67: Ligne 120:
 Now, the “-e” is for “exist”, but we can also check if it is a file or a directory, and yes, you guessed it they are “-f” or “-d”.  As I said, this is not difficult. Now, the “-e” is for “exist”, but we can also check if it is a file or a directory, and yes, you guessed it they are “-f” or “-d”.  As I said, this is not difficult.
  
-As you can see, once you get the basics, the rest just fall into place. Like, for instance, would you like to know if a file has write permissions? +As you can see, once you get the basics, the rest just fall into place. Like, for instance, would you like to know if a file has write permissions? **
  
-Hah, see you are getting smarter already! Yes, type: +Vous êtes tous des gens intelligents, je ne vais donc pas sortir les crayons de cire.  
 + 
 +Allons plus loin, nous pouvons l'utiliser pour les fichiers et les dossiers, pourquoi ? Parce que nous obtenons un booléen en retour. Tapez :  
 + 
 +[ -e a.out ] ; echo $? 
 + 
 +Cela teste la présence d'un fichier nommé « a.out ».  Vous pouvez tester n'importe quel fichier. (En bas à gauche se trouve une capture d'écran pour le voir en action.) 
 + 
 +Disons que j'ai un fichier nommé icon.svg, mais pas de fichier nommé icons.svg, dans mon dossier. 
 + 
 +Le « -e » est pour « exister », mais nous pouvons aussi vérifier s'il s'agit d'un fichier ou d'un dossier ; et oui, vous l'avez deviné, il s'agit de « -f » ou « -d ».  Comme je l'ai dit, ce n'est pas difficile. 
 + 
 +Comme vous pouvez le voir, une fois les bases acquises, le reste se met en place. Par exemple, voulez-vous savoir si un fichier a les droits d'écriture ? 
 + 
 + 
 +**Hah, see you are getting smarter already! Yes, type: 
  
 [ -w a.out ] ; echo $? [ -w a.out ] ; echo $?
Ligne 75: Ligne 143:
 So now you know* how the test command works, you can go through the switches in the man page and it will start making sense to you. One of the other options you may come across is “-s” which checks if a file has meat on the bones. To see this in action, type:  So now you know* how the test command works, you can go through the switches in the man page and it will start making sense to you. One of the other options you may come across is “-s” which checks if a file has meat on the bones. To see this in action, type: 
  
- touch man.man && [ -s man.man ] ; echo $?+touch man.man && [ -s man.man ] ; echo $? 
 + 
 +Did you understand what you just typed? If not, misc@fullcirclemagazine.org** 
 + 
 +Hah, vous voyez que vous devenez déjà plus intelligent ! Oui, tapez :  
 + 
 +[ -w a.out ] ; echo $? 
 + 
 +Maintenant que vous savez* comment fonctionne la commande test, vous pouvez consulter les options de la page du manuel et vous comprendrez mieux. L'une des autres options que vous rencontrerez peut-être est « -s », qui vérifie si un fichier a de la viande sur les os. Pour voir cela en action, tapez :  
 + 
 +touch man.man && [ -s man.man ] ; echo $?
  
-Did you understand what you just typedIf not, misc@fullcirclemagazine.org+Avez-vous compris ce que vous venez de taper Si ce n'est pas le cas, misc@fullcirclemagazine.org
  
issue206/c_c.1719671422.txt.gz · Dernière modification : 2024/06/29 16:30 de auntiee