more tricks

This commit is contained in:
tTh 2024-09-17 18:58:33 +02:00
parent 2bb29f37e3
commit 48b66b3034
1 changed files with 77 additions and 30 deletions

View File

@ -74,7 +74,7 @@ tests et les boucles.
% -------------------------------------------------------------- % --------------------------------------------------------------
\subsection{Le shebang} \index{shebang} \subsection{Le shebang} \index{shebang} \label{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.
@ -99,7 +99,7 @@ l'usage à l'instant, avec la création d'un script complet~:
\begin{verbatim} \begin{verbatim}
tth@redlady:~$ echo '#!/bin/bash' > foo.sh tth@redlady:~$ echo '#!/bin/bash' > foo.sh
tth@redlady:~$ echo 'printf "%d" 85 >> foo.sh tth@redlady:~$ echo 'printf "%x" 85 >> foo.sh
tth@redlady:~$ chmod u+x ./foo.sh tth@redlady:~$ chmod u+x ./foo.sh
tth@redlady:~$ ./foo.sh tth@redlady:~$ ./foo.sh
55 55
@ -145,12 +145,31 @@ Les plus importantes sont là : le choix, la boucle, l'attente.
\subsection {Les tests} \subsection {Les tests}
Deux éléments sont ils-égaux ? Deux éléments sont ils égaux ? Et d'abord, ces deux éléments
sont-ils comparables ?
% -------------------------------------------------------------- % --------------------------------------------------------------
\subsection {Les boucles} \subsection {Les boucles}
Exemple très simple~:
\begin{verbatim}
for foo in A B C D
do
echo ${foo}
done
\end{verbatim}
Autre exemple, un peu moins simple~:
\begin{verbatim}
for foo in $(seq 0 37 133)
do
printf "foo = %3d\n" ${foo}
done
\end{verbatim}
% ============================================================== % ==============================================================
\section{Les fonctions} \section{Les fonctions}
@ -173,37 +192,48 @@ Et comment les utiliser~:
\section{Heredoc} \section{Heredoc}
Un nom bien difficile à traduire, peut-être par « document en place » ? Un nom bien difficile à traduire, peut-être par « document en place » ?
C'est un moyen simple et efficace de mettre des données textuelles
dans un script afin de les envoyer dans le \textsl{stdin} d'un
logiciel. Par exemple, quelques commandes pour générer un
graphique avec Gnuplot\index{gnuplot} sur la console \textsl{dumb}.
\lstinputlisting{code/shell/heredoc.sh} \lstinputlisting{code/shell/heredoc.sh}
\begin{verbatim} Après le \textsl{shebang}, nous avons la création de la variable
tth@redlady:~/Devel/TetaTricks$ code/shell/heredoc.sh pour le titre,
et ensuite l'appel à Gnuplot avec la redirection
\texttt{$<<$ \_\_EOC\_\_} % bug affichage "<<"
qui va envoyer sur le stdin de Gnuplot la suite du
script shell (des commandes gnuplot), jusque au marqueur de fin,
qui est \texttt{\_\_EOC\_\_} dans notre cas.
Here Doc ... et la démonstration~:
1 +--------------------------------------------------------------------+ \begin{verbatim}
| +** *** + + + + | tth@redlady:~/Devel/TetaTricks/code/shell$ ./heredoc.sh
0.8 |-+.......**..........:.**.......:..........:.........sin(x).*******-|
| ** : : * : : : : | Here Doc (9946)
0.6 |-+....**..:..........:....**....:..........:..........:..........:+-|
| * : : * : : : : | 1 +-------------------------------------------------------------+
0.4 |-+.**.....:..........:.......*..:..........:..........:..........:+-| | + + + + + + + + + |
| * : : * : : : : | | 0.7*sin(x) ******* |
0.2 |-*........:..........:.........**..........:..........:..........:+-| | ****** ****** |
|* : : * : : : | 0.5 |-+ ** ** ** ** +-|
0 |-+........:..........:..........:**........:..........:..........:+-| | ** * * ** |
| : : : * : : : *| | ** ** ** ** |
-0.2 |-+........:..........:..........:..**......:..........:..........:*-| | ** ** ** ** |
| : : : * : : * | |* ** ** *|
-0.4 |-+........:..........:..........:.....*....:..........:........**:+-| 0 |-+ * * +-|
| : : : * : : * : | | ** ** |
-0.6 |-+........:..........:..........:.......**.:..........:.....**...:+-| | * * |
| : : : *: : ** : | | * * |
-0.8 |-+........:..........:..........:..........**.........:..**......:+-| -0.5 |-+ ** ** +-|
| + + + + *** +** + | | *** *** |
-1 +--------------------------------------------------------------------+ | ******* |
0 1 2 3 4 5 6 | |
| + + + + + + + + + |
-1 +-------------------------------------------------------------+
0 1 2 3 4 5 6 7 8 9
\end{verbatim} \end{verbatim}
Je pense que l'exemple est assez parlant. Je pense que l'exemple est assez parlant.
@ -220,6 +250,23 @@ Quelle sont les différences entre \texttt{en\_US.UTF-8} et
\texttt{C.UTF-8} ? \texttt{C.UTF-8} ?
% ============================================================== % ==============================================================
% https://wiki.fiat-tux.fr/books/d%C3%A9veloppement/page/ajouter-des-couleurs-a-ses-scripts-shell
\section{Écrire en couleur} \index{ANSI} \index{escape}
\begin{verbatim}
BLACK='\033[0;30m'
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
WHITE='\033[0;37m'
\end{verbatim}
% ==============================================================
\section{Questions à voir} \section{Questions à voir}
\begin{itemize} \begin{itemize}