From f00a06b0c7097466af10d5ceffabe50b9713ebfd Mon Sep 17 00:00:00 2001 From: tTh Date: Thu, 8 Aug 2024 15:33:18 +0200 Subject: [PATCH] more bla --- chap/shell.tex | 61 +++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 53 insertions(+), 8 deletions(-) diff --git a/chap/shell.tex b/chap/shell.tex index ac47f36..6898b18 100644 --- a/chap/shell.tex +++ b/chap/shell.tex @@ -39,24 +39,47 @@ Thu Oct 5 00:53:01 UTC 2023 tth@redlady:~$ \end{verbatim} +Ces ordres peuvent être des commandes internes à l'interpréteur, +d'autres seront des commandes fournies par des exécutables +externes. Pour le début, la différence n'est pas importante. + +Mais comment le shell fait-il pour retrouver tous les outils +dont il a besoin ? Simplement, il connait une liste +d'endroits où aller chercher, une sorte de chemin de recherche, +c'est d'ailleurs pour ça que cette liste +est nommée \texttt{PATH}\index{PATH}. +Il est très simple de la visualiser~: +\begin{verbatim} +tth@redlady:~/Devel/TetaTricks$ echo $PATH +/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games +\end{verbatim} + % ============================================================== -\section{Langage}\index{script} +\section{Un langage}\index{script} -Le shell est aussi, et surtout, un langage de programmation, parfois -appelé \textsl{glue-language} parce qu'il permet de "coller" ensemble -plusieurs opérations élémentaires, d'abord avec ses opérateurs internes -et ensuite l'utilisation d'outils -extérieurs\footnote{Grep, Sed, Awk, BwBasic...} +Le shell est aussi, et surtout, un langage de programmation +à part entière. +Il est parfois appelé \textsl{glue-language} parce qu'il permet de +"coller" ensemble plusieurs opérations élémentaires, d'abord avec +ses opérateurs internes et ensuite par l'utilisation d'outils +extérieurs\footnote{Grep, Sed, Awk, BwBasic, Sort, Gfortran...} divers. C'est \textsl{très} efficace. +Nous allons commencer par voir quelques notions liées à +la création d'un script exécutable, puis d'un enchainement +de commandes. +Nous passerons ensuite aux structures de contrôle, comme les +tests et les boucles. + % -------------------------------------------------------------- -\subsection{Le \textsc{shebang}} \index{shebang} +\subsection{Le shebang} \index{shebang} Le shebang, c'est ce couple de caractères \texttt{\#!} qui apparait au tout début d'un script shell. -Le 'she' est l'abréviation de 'sharp', coupant en français. C'est +Le 'she' est l'abréviation de 'sharp', qui veut dire 'coupant' en français. +C'est probablement une allusion aux cotés tranchants du \texttt{\#}. Quand au 'bang', c'est le point d'exclamation après l'explosion de la forkbomb. @@ -67,6 +90,26 @@ octets. Si les deux premiers sont \textsl{0x23 0x21}, le reste de la première ligne sera interprété pour lancer un autre exécutable, avec un traitement particuler des options. +Et à ce momment-là des explications, on entend Serguey qui hurle +du fond de la salle « schmod777 en force ! ». +Et il a bien raison. En effet, ce fichier doit être vu comme +possiblement exécutable selon les droits 'X' qu'il a. +Il y a une commande prévue à cet effet, dont nous allons voir +l'usage à l'instant, avec la création d'un script complet~: + +\begin{verbatim} +tth@redlady:~$ echo '#!/bin/bash' > foo.sh +tth@redlady:~$ echo 'printf "%d" 85 >> foo.sh +tth@redlady:~$ chmod u+x ./foo.sh +tth@redlady:~$ ./foo.sh +55 +tth@redlady:~$ cat foo.sh +#!/bin/bash +printf "%x\n" 85 +tth@redlady:~$ +\end{verbatim} + + % ============================================================== \section{Le pipeline}\index{pipeline}\label{pipeline} @@ -96,6 +139,8 @@ $ \section{Structures de contrôle} +Les plus importantes sont là : le choix, la boucle, l'attente. + % -------------------------------------------------------------- \subsection {Les tests}