more bla
This commit is contained in:
parent
f3289fc23c
commit
f00a06b0c7
@ -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}
|
||||
|
Loading…
Reference in New Issue
Block a user