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}
Après le \textsl{shebang}, nous avons la création de la variable
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.
... et la démonstration~:
\begin{verbatim} \begin{verbatim}
tth@redlady:~/Devel/TetaTricks$ code/shell/heredoc.sh tth@redlady:~/Devel/TetaTricks/code/shell$ ./heredoc.sh
Here Doc Here Doc (9946)
1 +--------------------------------------------------------------------+ 1 +-------------------------------------------------------------+
| +** *** + + + + | | + + + + + + + + + |
0.8 |-+.......**..........:.**.......:..........:.........sin(x).*******-| | 0.7*sin(x) ******* |
| ** : : * : : : : | | ****** ****** |
0.6 |-+....**..:..........:....**....:..........:..........:..........:+-| 0.5 |-+ ** ** ** ** +-|
| * : : * : : : : | | ** * * ** |
0.4 |-+.**.....:..........:.......*..:..........:..........:..........:+-| | ** ** ** ** |
| * : : * : : : : | | ** ** ** ** |
0.2 |-*........:..........:.........**..........:..........:..........:+-| |* ** ** *|
|* : : * : : : | 0 |-+ * * +-|
0 |-+........:..........:..........:**........:..........:..........:+-| | ** ** |
| : : : * : : : *| | * * |
-0.2 |-+........:..........:..........:..**......:..........:..........:*-| | * * |
| : : : * : : * | -0.5 |-+ ** ** +-|
-0.4 |-+........:..........:..........:.....*....:..........:........**:+-| | *** *** |
| : : : * : : * : | | ******* |
-0.6 |-+........:..........:..........:.......**.:..........:.....**...:+-| | |
| : : : *: : ** : | | + + + + + + + + + |
-0.8 |-+........:..........:..........:..........**.........:..**......:+-| -1 +-------------------------------------------------------------+
| + + + + *** +** + | 0 1 2 3 4 5 6 7 8 9
-1 +--------------------------------------------------------------------+
0 1 2 3 4 5 6
\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}