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:~$
|
tth@redlady:~$
|
||||||
\end{verbatim}
|
\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
|
Le shell est aussi, et surtout, un langage de programmation
|
||||||
appelé \textsl{glue-language} parce qu'il permet de "coller" ensemble
|
à part entière.
|
||||||
plusieurs opérations élémentaires, d'abord avec ses opérateurs internes
|
Il est parfois appelé \textsl{glue-language} parce qu'il permet de
|
||||||
et ensuite l'utilisation d'outils
|
"coller" ensemble plusieurs opérations élémentaires, d'abord avec
|
||||||
extérieurs\footnote{Grep, Sed, Awk, BwBasic...}
|
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.
|
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
|
Le shebang, c'est ce couple de caractères \texttt{\#!} qui apparait
|
||||||
au tout début d'un script shell.
|
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{\#}.
|
probablement une allusion aux cotés tranchants du \texttt{\#}.
|
||||||
Quand au 'bang', c'est le point d'exclamation après l'explosion
|
Quand au 'bang', c'est le point d'exclamation après l'explosion
|
||||||
de la forkbomb.
|
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,
|
de la première ligne sera interprété pour lancer un autre exécutable,
|
||||||
avec un traitement particuler des options.
|
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}
|
\section{Le pipeline}\index{pipeline}\label{pipeline}
|
||||||
|
|
||||||
@ -96,6 +139,8 @@ $
|
|||||||
|
|
||||||
\section{Structures de contrôle}
|
\section{Structures de contrôle}
|
||||||
|
|
||||||
|
Les plus importantes sont là : le choix, la boucle, l'attente.
|
||||||
|
|
||||||
% --------------------------------------------------------------
|
% --------------------------------------------------------------
|
||||||
|
|
||||||
\subsection {Les tests}
|
\subsection {Les tests}
|
||||||
|
Loading…
Reference in New Issue
Block a user