From 48b66b3034d0634d95832ac3a300e79b8dff301b Mon Sep 17 00:00:00 2001 From: tTh Date: Tue, 17 Sep 2024 18:58:33 +0200 Subject: [PATCH] more tricks --- chap/shell.tex | 107 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 77 insertions(+), 30 deletions(-) diff --git a/chap/shell.tex b/chap/shell.tex index 6898b18..f2f8be9 100644 --- a/chap/shell.tex +++ b/chap/shell.tex @@ -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 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} 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:~$ ./foo.sh 55 @@ -145,12 +145,31 @@ Les plus importantes sont là : le choix, la boucle, l'attente. \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} +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} @@ -173,37 +192,48 @@ Et comment les utiliser~: \section{Heredoc} 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} -\begin{verbatim} -tth@redlady:~/Devel/TetaTricks$ 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. - Here Doc - - 1 +--------------------------------------------------------------------+ - | +** *** + + + + | - 0.8 |-+.......**..........:.**.......:..........:.........sin(x).*******-| - | ** : : * : : : : | - 0.6 |-+....**..:..........:....**....:..........:..........:..........:+-| - | * : : * : : : : | - 0.4 |-+.**.....:..........:.......*..:..........:..........:..........:+-| - | * : : * : : : : | - 0.2 |-*........:..........:.........**..........:..........:..........:+-| - |* : : * : : : | - 0 |-+........:..........:..........:**........:..........:..........:+-| - | : : : * : : : *| --0.2 |-+........:..........:..........:..**......:..........:..........:*-| - | : : : * : : * | --0.4 |-+........:..........:..........:.....*....:..........:........**:+-| - | : : : * : : * : | --0.6 |-+........:..........:..........:.......**.:..........:.....**...:+-| - | : : : *: : ** : | --0.8 |-+........:..........:..........:..........**.........:..**......:+-| - | + + + + *** +** + | - -1 +--------------------------------------------------------------------+ - 0 1 2 3 4 5 6 +... et la démonstration~: + +\begin{verbatim} +tth@redlady:~/Devel/TetaTricks/code/shell$ ./heredoc.sh + + Here Doc (9946) + + 1 +-------------------------------------------------------------+ + | + + + + + + + + + | + | 0.7*sin(x) ******* | + | ****** ****** | + 0.5 |-+ ** ** ** ** +-| + | ** * * ** | + | ** ** ** ** | + | ** ** ** ** | + |* ** ** *| + 0 |-+ * * +-| + | ** ** | + | * * | + | * * | + -0.5 |-+ ** ** +-| + | *** *** | + | ******* | + | | + | + + + + + + + + + | + -1 +-------------------------------------------------------------+ + 0 1 2 3 4 5 6 7 8 9 \end{verbatim} 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} ? % ============================================================== +% 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} \begin{itemize}