aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Alessi <alessi@robertalessi.net>2018-09-27 11:44:38 +0200
committerRobert Alessi <alessi@robertalessi.net>2018-09-27 11:44:38 +0200
commitf4f700e2deed3bbe6ab07a172d3659138e155fbc (patch)
tree6e72cde8a451d8550804bc9fbe81300ae0f7ce2d
parenta67cdf7e5a77d115192b358b707460cc85e64762 (diff)
downloadcourses-f4f700e2deed3bbe6ab07a172d3659138e155fbc.tar.gz
made scripts available in a separate directory
-rw-r--r--_preamble.tex5
-rw-r--r--fichiers/03-grep-bash.tex253
-rw-r--r--fichiers/scripts/animal.sh16
-rw-r--r--fichiers/scripts/backup-mk2.sh25
-rw-r--r--fichiers/scripts/backup.sh19
-rw-r--r--fichiers/scripts/copyten-mk2.sh41
-rw-r--r--fichiers/scripts/copyten.sh35
-rw-r--r--fichiers/scripts/countlines-mk2.sh23
-rw-r--r--fichiers/scripts/countlines.sh25
-rw-r--r--fichiers/scripts/greaterthan.sh11
-rw-r--r--fichiers/scripts/rah.sh13
-rw-r--r--fichiers/scripts/tiff2png.sh4
-rw-r--r--makefile3
13 files changed, 234 insertions, 239 deletions
diff --git a/_preamble.tex b/_preamble.tex
index 682ea4a..19c71b0 100644
--- a/_preamble.tex
+++ b/_preamble.tex
@@ -31,10 +31,11 @@ delim_0 ",\~"
31\usepackage{imakeidx} 31\usepackage{imakeidx}
32\usepackage{xparse} 32\usepackage{xparse}
33 33
34\usepackage[unicode=true]{hyperref} 34\usepackage{hyperref}
35\hypersetup{colorlinks,allcolors=blue,linktocpage} 35\hypersetup{unicode=true,colorlinks,allcolors=blue,linktocpage}
36\usepackage{hyperxmp} 36\usepackage{hyperxmp}
37\usepackage{uri} 37\usepackage{uri}
38\usepackage{intopdf}
38 39
39\usepackage{cleveref} 40\usepackage{cleveref}
40\crefname{table}{tableau}{tableaux} 41\crefname{table}{tableau}{tableaux}
diff --git a/fichiers/03-grep-bash.tex b/fichiers/03-grep-bash.tex
index 8b9c78e..c4c5f05 100644
--- a/fichiers/03-grep-bash.tex
+++ b/fichiers/03-grep-bash.tex
@@ -22,6 +22,12 @@
22 {\index[cmds]{#2@\texttt{#2}#3}} 22 {\index[cmds]{#2@\texttt{#2}#3}}
23} 23}
24 24
25\NewDocumentCommand{\inputfile}{O{} m m O{application/x-sh}}{
26 \attachandlink{scripts/#3}[#4]{Fichier
27 attaché}{\marginpar{\textcolor{blue}{Ouvrir le fichier}}}
28 \inputminted[#1]{#2}{scripts/#3}
29}
30
25\begin{document} 31\begin{document}
26\maketitle 32\maketitle
27\renewcommand{\contentsname}{Sommaire} 33\renewcommand{\contentsname}{Sommaire}
@@ -700,29 +706,9 @@ fi
700 706
701Voici donc comment se présente le script \verb|backup.sh| une fois la 707Voici donc comment se présente le script \verb|backup.sh| une fois la
702condition insérée: 708condition insérée:
703\begin{minted}[linenos,highlightlines={7-14}]{bash}
704#!/bin/bash
705echo "Veuillez choisir l'extension des fichiers à sauvegarder"
706echo "(sans le point):"
707read -p 'extension: ' ext
708echo "Veuillez choisir le nom du dossier de sauvegarde:"
709read -p 'dossier: ' backupdir
710if [ -d "$backupdir" ]
711then
712 echo "Le dossier $backupdir existe déjà. Veuillez relancer le"
713 echo "programme et saisir un autre nom."
714 exit 1
715else
716 mkdir "$backupdir"
717fi
718cp *.$ext "$backupdir"
719nbre=$(ls $backupdir/*.$ext | wc -l)
720zip -r "$backupdir".zip "$backupdir"
721echo "Terminé. $0 a copié $nbre fichiers .$ext dans $backupdir"
722echo "et l'archive $backupdir.zip a été créée."
723\end{minted}
724\captionof{listing}{bash: exemple de condition \texttt{if-then-else}% 709\captionof{listing}{bash: exemple de condition \texttt{if-then-else}%
725\label{lst:if-then-else}} 710\label{lst:if-then-else}}
711\inputfile[linenos,highlightlines={7-14}]{bash}{backup.sh}
726 712
727\subsection{Conditions en série} 713\subsection{Conditions en série}
728\label{sec:conditions-en-serie} 714\label{sec:conditions-en-serie}
@@ -743,35 +729,9 @@ elif [ -e "$backupdir".zip ]
743 exit 1 729 exit 1
744\end{minted} 730\end{minted}
745 731
746Ce qui donne le script \verb|backup.sh| suivant: 732Ce qui donne le script \verb|backup-mk2.sh| suivant:
747\begin{minted}[linenos,highlightlines={12-17}]{bash}
748#!/bin/bash
749echo "Veuillez choisir l'extension des fichiers à sauvegarder"
750echo "(sans le point):"
751read -p 'extension: ' ext
752echo "Veuillez choisir le nom du dossier de sauvegarde:"
753read -p 'dossier: ' backupdir
754if [ -d "$backupdir" ]
755 then
756 echo "Le dossier $backupdir existe déjà. Veuillez relancer le"
757 echo "programme et saisir un autre nom."
758 exit 1
759elif [ -e "$backupdir".zip ]
760 then
761 echo "L'archive $backupdir.zip existe déjà. Veuillez la supprimer"
762 echo "ou la déplacer en dehors de ce dossier, puis relancez le"
763 echo "programme."
764 exit 1
765else
766 mkdir "$backupdir"
767fi
768cp *.$ext "$backupdir"
769nbre=$(ls $backupdir/*.$ext | wc -l)
770zip -r "$backupdir".zip "$backupdir"
771echo "Terminé. $0 a copié $nbre fichiers .$ext dans $backupdir"
772echo "et l'archive $backupdir.zip a été créée."
773\end{minted}
774\captionof{listing}{bash: instruction \texttt{elif}\label{lst:elif}} 733\captionof{listing}{bash: instruction \texttt{elif}\label{lst:elif}}
734\inputfile[linenos,highlightlines={12-17}]{bash}{backup-mk2.sh}
775 735
776\subsection{Tests} 736\subsection{Tests}
777\label{sec:tests} 737\label{sec:tests}
@@ -865,20 +825,8 @@ des opérateurs tels que \verb|{ ... }|
865 825
866Voici un exemple d'indentation d'une structure dans laquelle on a 826Voici un exemple d'indentation d'une structure dans laquelle on a
867placé une condition à l'intérieur d'une autre condition: 827placé une condition à l'intérieur d'une autre condition:
868\begin{minted}[linenos]{bash}
869#!/bin/bash
870if [ $1 -gt 10 ]
871then
872 echo "$1 est supérieur à 10"
873 if [ $1 -gt 100 ]
874 then
875 echo "et $1 est même supérieur à 100!"
876 fi
877else
878 echo "Il faut aller au-dessus de 10 pour avoir une réponse!"
879fi
880\end{minted}
881\captionof{listing}{bash: exemple d'indentation} 828\captionof{listing}{bash: exemple d'indentation}
829\inputfile[linenos]{bash}{greaterthan.sh}
882 830
883\subsection{Opérateurs booléens} 831\subsection{Opérateurs booléens}
884\label{sec:operateurs-booleens} 832\label{sec:operateurs-booleens}
@@ -935,25 +883,8 @@ esac
935 883
936Le \vref{lst:case} montre un exemple facile à comprendre de cette 884Le \vref{lst:case} montre un exemple facile à comprendre de cette
937technique. 885technique.
938\begin{minted}[linenos]{bash}
939#!/bin/bash
940
941echo "Entre le chien et le chat, quel est votre animal préféré?"
942read -p 'Saisissez votre réponse: ' animal
943
944case $animal in
945 [Cc]hien)
946 echo "Vous avez bien raison, le chien est le meilleur ami de l'homme."
947 ;;
948 [Cc]hat)
949 echo "Après le chien, c'était un en effet un choix possible."
950 ;;
951 *)
952 echo "Faites un effort, vous n'avez pas compris la question."
953 ;;
954esac
955\end{minted}
956\captionof{listing}{bash: instruction \texttt{case}\label{lst:case}} 886\captionof{listing}{bash: instruction \texttt{case}\label{lst:case}}
887\inputfile[linenos]{bash}{animal.sh}
957\begin{quoting} 888\begin{quoting}
958 \textbf{Commentaire:} 889 \textbf{Commentaire:}
959 \begin{enumerate} 890 \begin{enumerate}
@@ -1045,13 +976,8 @@ La boucle que nous allons utiliser fait appel à trois instructions:
1045 976
1046Voici maintenant le script qui assure la conversion du format 977Voici maintenant le script qui assure la conversion du format
1047\verb|.tiff| vers le format \verb|.png|: 978\verb|.tiff| vers le format \verb|.png|:
1048\begin{minted}[linenos]{bash}
1049#!/bin/bash
1050for file in $(basename -s .tiff $(ls *.tiff))
1051 do convert "$file".tiff "$file".png
1052done
1053\end{minted}
1054\captionof{listing}{bash: \texttt{for ... do ... done}} 979\captionof{listing}{bash: \texttt{for ... do ... done}}
980\inputfile[linenos]{bash}{tiff2png.sh}
1055 981
1056\begin{quoting} 982\begin{quoting}
1057 \textbf{Commentaire:} 983 \textbf{Commentaire:}
@@ -1084,34 +1010,8 @@ script \verb|countlines.sh|, donné dans le \cref{lst:countlines}
1084ci-dessous, utilise cette expression pour compter les lignes des 1010ci-dessous, utilise cette expression pour compter les lignes des
1085fichiers\footnote{Pour une autre façon plus simple d'écrire le même 1011fichiers\footnote{Pour une autre façon plus simple d'écrire le même
1086 programme, voir le \vref{lst:countlines-mk2}.}. 1012 programme, voir le \vref{lst:countlines-mk2}.}.
1087\begin{minted}[linenos,highlightlines={13,16-17}]{bash}
1088#!/bin/bash
1089
1090echo "Entrez le nom du fichier dont vous voulez compter les lignes:"
1091read -p 'Fichier: ' file
1092
1093numline=0
1094
1095if [ ! -e $file ] || [ -z $file ]
1096 then
1097 echo "Erreur: le fichier $file n'existe pas."
1098 exit 1
1099 else
1100 while read -r line
1101 # 'let' permet de poser des opérations arithmétiques;
1102 # à la place, on aurait pu écrire: do ((++numline))
1103 do let "numline = numline + 1"
1104 done < $file
1105fi
1106
1107if [ $numline -le 1 ]
1108 then
1109 echo "Votre fichier $file compte $numline ligne."
1110 else
1111 echo "Votre fichier $file compte $numline lignes."
1112fi
1113\end{minted}
1114\captionof{listing}{bash: \texttt{while}\label{lst:countlines}} 1013\captionof{listing}{bash: \texttt{while}\label{lst:countlines}}
1014\inputfile[linenos,highlightlines={13,16-17}]{bash}{countlines.sh}
1115 1015
1116\paragraph{read} 1016\paragraph{read}
1117\label{ref:read-plus}\commande*{read} 1017\label{ref:read-plus}\commande*{read}
@@ -1180,22 +1080,8 @@ le résultat du test associé à \verb|until| devient \emph{positif}
1180(\emph{true}). Pour prendre un exemple très simple, le script suivant, 1080(\emph{true}). Pour prendre un exemple très simple, le script suivant,
1181que l'on appellera \verb|roar.sh|, demande combien de fois on souhaite 1081que l'on appellera \verb|roar.sh|, demande combien de fois on souhaite
1182tirer la queue d'un lion: 1082tirer la queue d'un lion:
1183\begin{minted}[linenos]{bash}
1184#!/bin/bash
1185
1186read -p 'Combien de fois tirez-vous la queue du lion? ' rahtimes
1187
1188# Définition du compteur de rugissements:
1189rah=1
1190
1191until [ $rah -gt $rahtimes ]
1192do
1193 echo "Raaaaaaaaahhhhhhhhhhhh! ($rah)"
1194 sleep 1
1195 ((++rah))
1196done
1197\end{minted}
1198\captionof{listing}{bash: comment faire rugir le lion?} 1083\captionof{listing}{bash: comment faire rugir le lion?}
1084\inputfile[linenos]{bash}{rah.sh}
1199 1085
1200\begin{quoting} 1086\begin{quoting}
1201 \textbf{Commentaire:} 1087 \textbf{Commentaire:}
@@ -1228,45 +1114,9 @@ trouve. Supposons par exemple que l'on écrive un programme dans lequel
1228on souhaite limiter une action telle que la copie de 1114on souhaite limiter une action telle que la copie de
1229fichiers. L'instruction \verb|break| sera exécutée dès que la limite 1115fichiers. L'instruction \verb|break| sera exécutée dès que la limite
1230est atteinte. Appelons ce script \verb|copyten.sh|: 1116est atteinte. Appelons ce script \verb|copyten.sh|:
1231\begin{minted}[linenos]{bash}
1232#!/bin/bash
1233
1234# création du compteur de fichiers copiés.
1235countfiles=0
1236
1237# On demande quels fichiers doivent être copiés. Mais avant cela, on
1238# explique à l'utilisateur ce que fait ce programme.
1239echo "Attention: ce programme copie au maximum 10 fichiers."
1240read -p 'Que souhaitez-vous copier: ' files
1241
1242# On demande la destination:
1243read -p 'Répertoire de destination: ' dest
1244
1245# <destination> doit être un répertoire:
1246if [ ! -d $dest ]
1247then
1248 echo "Erreur: la destination doit être un répertoire."
1249 echo " Le cas échéant, utilisez \"mkdir $dest\""
1250 echo " pour créer le répertoire de destination."
1251 exit 1
1252else # Si <destination> est un répertoire, alors pour chaque fichier
1253 # copié on incrémente le compteur. Et dès que le compteur
1254 # atteint le chiffre de 10, on sort de la boucle.
1255 for file in $files # pour chaque fichier à copier
1256 do
1257 cp $file $dest
1258 let "countfiles = countfiles + 1"
1259 if [ $countfiles -eq 10 ]
1260 then
1261 break # sortie de la boucle
1262 fi
1263 done
1264fi
1265
1266echo "Terminé. 10 fichiers au maximum ont été copiés dans $dest."
1267\end{minted}
1268\captionof{listing}{bash: copie d'un nombre limité de 1117\captionof{listing}{bash: copie d'un nombre limité de
1269 fichiers\label{lst:copyten}} 1118 fichiers\label{lst:copyten}}
1119\inputfile[linenos]{bash}{copyten.sh}
1270 1120
1271Ce script donne un exemple de code commenté. Comme on le voit, les 1121Ce script donne un exemple de code commenté. Comme on le voit, les
1272commentaires peuvent se trouver sur des lignes isolées aussi bien que 1122commentaires peuvent se trouver sur des lignes isolées aussi bien que
@@ -1304,51 +1154,9 @@ partir de l'itération suivante. C'est une façon de prévoir des
1304exceptions. Par exemple, nous pouvons modifier le script 1154exceptions. Par exemple, nous pouvons modifier le script
1305\ref{lst:copyten} comme suit: 1155\ref{lst:copyten} comme suit:
1306 1156
1307\begin{minted}[linenos,highlightlines={26-31}]{bash}
1308#!/bin/bash
1309
1310# création du compteur de fichiers copiés.
1311countfiles=0
1312
1313# On demande quels fichiers doivent être copiés. Mais avant cela, on
1314# explique à l'utilisateur ce que fait ce programme.
1315echo "Attention: ce programme copie au maximum 10 fichiers."
1316read -p 'Que souhaitez-vous copier: ' files
1317
1318# On demande la destination:
1319read -p 'Répertoire de destination: ' dest
1320
1321# <destination> doit être un répertoire:
1322if [ ! -d $dest ]
1323then
1324 echo "Erreur: la destination doit être un répertoire."
1325 echo " Le cas échéant, utilisez \"mkdir $dest\""
1326 echo " pour créer le répertoire de destination."
1327 exit 1
1328else # Si <destination> est un répertoire, alors pour chaque fichier
1329 # copié on incrémente le compteur. Et dès que le compteur
1330 # atteint le chiffre de 10, on sort de la boucle.
1331 for file in $files # pour chaque fichier à copier
1332 do
1333 if [ ! -e $file ] # si le fichier à copier n'exite pas
1334 then
1335 echo "création de $file qui n'existe pas..."
1336 touch $dest/$file
1337 continue # arrêter ici et reprendre à la l. 24
1338 fi
1339 cp $file $dest
1340 let "countfiles = countfiles + 1"
1341 if [ $countfiles -eq 10 ]
1342 then
1343 break # sortie de la boucle
1344 fi
1345 done
1346fi
1347
1348echo "Terminé. 10 fichiers au maximum ont été copiés dans $dest."
1349\end{minted}
1350\captionof{listing}{bash: copie d'un nombre limité de 1157\captionof{listing}{bash: copie d'un nombre limité de
1351 fichiers sans échec si le fichier source n'existe pas} 1158 fichiers sans échec si le fichier source n'existe pas}
1159\inputfile[linenos,highlightlines={26-31}]{bash}{copyten-mk2.sh}
1352 1160
1353\begin{quoting} 1161\begin{quoting}
1354 \textbf{Commentaire:} 1162 \textbf{Commentaire:}
@@ -1364,7 +1172,7 @@ echo "Terminé. 10 fichiers au maximum ont été copiés dans $dest."
1364 1172
1365Voici ce que donne l'exécution de ce script: 1173Voici ce que donne l'exécution de ce script:
1366\begin{minted}{text} 1174\begin{minted}{text}
1367[robert@kiddo courses]$ ./copyten.sh 1175[robert@kiddo courses]$ ./copyten-mk2.sh
1368Attention: ce programme copie au maximum 10 fichiers. 1176Attention: ce programme copie au maximum 10 fichiers.
1369Que souhaitez-vous copier: tchic.txt 1177Que souhaitez-vous copier: tchic.txt
1370Répertoire de destination: Houba 1178Répertoire de destination: Houba
@@ -1401,34 +1209,9 @@ rien entre les parenthèses qui sont purement décoratives.
1401 1209
1402Le script suivant permet de parvenir au même résultat que le script 1210Le script suivant permet de parvenir au même résultat que le script
1403qui a été présenté dans le \vref{lst:countlines}: 1211qui a été présenté dans le \vref{lst:countlines}:
1404\begin{minted}[linenos]{bash}
1405#!/bin/bash
1406
1407echo "Entrez le nom du fichier dont vous voulez compter les lignes:"
1408read -p 'Fichier: ' file
1409
1410countlines () {
1411 cat $1 | wc -l
1412}
1413
1414if [ ! -e $file ] || [ -z $file ]
1415 then
1416 echo "Erreur: le fichier $file n'existe pas."
1417 exit 1
1418 else
1419 numline=$(countlines $file)
1420fi
1421
1422if [ $numline -le 1 ]
1423 then
1424 echo "Votre fichier $file compte $numline ligne."
1425 else
1426 echo "Votre fichier $file compte $numline lignes."
1427fi
1428\end{minted}
1429\enlargethispage{2\baselineskip}
1430\captionof{listing}{bash: exemple de 1212\captionof{listing}{bash: exemple de
1431 fonction\label{lst:countlines-mk2}} 1213 fonction\label{lst:countlines-mk2}}
1214\inputfile[linenos]{bash}{countlines-mk2.sh}
1432 1215
1433Pour terminer, exécutons cette nouvelle version de notre script 1216Pour terminer, exécutons cette nouvelle version de notre script
1434ici appelée \verb|countlines-mk2.sh|: 1217ici appelée \verb|countlines-mk2.sh|:
diff --git a/fichiers/scripts/animal.sh b/fichiers/scripts/animal.sh
new file mode 100644
index 0000000..668d4ed
--- /dev/null
+++ b/fichiers/scripts/animal.sh
@@ -0,0 +1,16 @@
1#!/bin/bash
2
3echo "Entre le chien et le chat, quel est votre animal préféré?"
4read -p 'Saisissez votre réponse: ' animal
5
6case $animal in
7 [Cc]hien)
8 echo "Vous avez bien raison, le chien est le meilleur ami de l'homme."
9 ;;
10 [Cc]hat)
11 echo "Après le chien, c'était un en effet un choix possible."
12 ;;
13 *)
14 echo "Faites un effort, vous n'avez pas compris la question."
15 ;;
16esac
diff --git a/fichiers/scripts/backup-mk2.sh b/fichiers/scripts/backup-mk2.sh
new file mode 100644
index 0000000..61eb824
--- /dev/null
+++ b/fichiers/scripts/backup-mk2.sh
@@ -0,0 +1,25 @@
1#!/bin/bash
2echo "Veuillez choisir l'extension des fichiers à sauvegarder"
3echo "(sans le point):"
4read -p 'extension: ' ext
5echo "Veuillez choisir le nom du dossier de sauvegarde:"
6read -p 'dossier: ' backupdir
7if [ -d "$backupdir" ]
8 then
9 echo "Le dossier $backupdir existe déjà. Veuillez relancer le"
10 echo "programme et saisir un autre nom."
11 exit 1
12elif [ -e "$backupdir".zip ]
13 then
14 echo "L'archive $backupdir.zip existe déjà. Veuillez la supprimer"
15 echo "ou la déplacer en dehors de ce dossier, puis relancez le"
16 echo "programme."
17 exit 1
18else
19 mkdir "$backupdir"
20fi
21cp *.$ext "$backupdir"
22nbre=$(ls $backupdir/*.$ext | wc -l)
23zip -r "$backupdir".zip "$backupdir"
24echo "Terminé. $0 a copié $nbre fichiers .$ext dans $backupdir"
25echo "et l'archive $backupdir.zip a été créée."
diff --git a/fichiers/scripts/backup.sh b/fichiers/scripts/backup.sh
new file mode 100644
index 0000000..3f7e109
--- /dev/null
+++ b/fichiers/scripts/backup.sh
@@ -0,0 +1,19 @@
1#!/bin/bash
2echo "Veuillez choisir l'extension des fichiers à sauvegarder"
3echo "(sans le point):"
4read -p 'extension: ' ext
5echo "Veuillez choisir le nom du dossier de sauvegarde:"
6read -p 'dossier: ' backupdir
7if [ -d "$backupdir" ]
8then
9 echo "Le dossier $backupdir existe déjà. Veuillez relancer le"
10 echo "programme et saisir un autre nom."
11 exit 1
12else
13 mkdir "$backupdir"
14fi
15cp *.$ext "$backupdir"
16nbre=$(ls $backupdir/*.$ext | wc -l)
17zip -r "$backupdir".zip "$backupdir"
18echo "Terminé. $0 a copié $nbre fichiers .$ext dans $backupdir"
19echo "et l'archive $backupdir.zip a été créée."
diff --git a/fichiers/scripts/copyten-mk2.sh b/fichiers/scripts/copyten-mk2.sh
new file mode 100644
index 0000000..2d51739
--- /dev/null
+++ b/fichiers/scripts/copyten-mk2.sh
@@ -0,0 +1,41 @@
1#!/bin/bash
2
3# création du compteur de fichiers copiés.
4countfiles=0
5
6# On demande quels fichiers doivent être copiés. Mais avant cela, on
7# explique à l'utilisateur ce que fait ce programme.
8echo "Attention: ce programme copie au maximum 10 fichiers."
9read -p 'Que souhaitez-vous copier: ' files
10
11# On demande la destination:
12read -p 'Répertoire de destination: ' dest
13
14# <destination> doit être un répertoire:
15if [ ! -d $dest ]
16then
17 echo "Erreur: la destination doit être un répertoire."
18 echo " Le cas échéant, utilisez \"mkdir $dest\""
19 echo " pour créer le répertoire de destination."
20 exit 1
21else # Si <destination> est un répertoire, alors pour chaque fichier
22 # copié on incrémente le compteur. Et dès que le compteur
23 # atteint le chiffre de 10, on sort de la boucle.
24 for file in $files # pour chaque fichier à copier
25 do
26 if [ ! -e $file ] # si le fichier à copier n'exite pas
27 then
28 echo "création de $file qui n'existe pas..."
29 touch $dest/$file
30 continue # arrêter ici et reprendre à la l. 24
31 fi
32 cp $file $dest
33 let "countfiles = countfiles + 1"
34 if [ $countfiles -eq 10 ]
35 then
36 break # sortie de la boucle
37 fi
38 done
39fi
40
41echo "Terminé. 10 fichiers au maximum ont été copiés dans $dest."
diff --git a/fichiers/scripts/copyten.sh b/fichiers/scripts/copyten.sh
new file mode 100644
index 0000000..59a7dda
--- /dev/null
+++ b/fichiers/scripts/copyten.sh
@@ -0,0 +1,35 @@
1#!/bin/bash
2
3# création du compteur de fichiers copiés.
4countfiles=0
5
6# On demande quels fichiers doivent être copiés. Mais avant cela, on
7# explique à l'utilisateur ce que fait ce programme.
8echo "Attention: ce programme copie au maximum 10 fichiers."
9read -p 'Que souhaitez-vous copier: ' files
10
11# On demande la destination:
12read -p 'Répertoire de destination: ' dest
13
14# <destination> doit être un répertoire:
15if [ ! -d $dest ]
16then
17 echo "Erreur: la destination doit être un répertoire."
18 echo " Le cas échéant, utilisez \"mkdir $dest\""
19 echo " pour créer le répertoire de destination."
20 exit 1
21else # Si <destination> est un répertoire, alors pour chaque fichier
22 # copié on incrémente le compteur. Et dès que le compteur
23 # atteint le chiffre de 10, on sort de la boucle.
24 for file in $files # pour chaque fichier à copier
25 do
26 cp $file $dest
27 let "countfiles = countfiles + 1"
28 if [ $countfiles -eq 10 ]
29 then
30 break # sortie de la boucle
31 fi
32 done
33fi
34
35echo "Terminé. 10 fichiers au maximum ont été copiés dans $dest."
diff --git a/fichiers/scripts/countlines-mk2.sh b/fichiers/scripts/countlines-mk2.sh
new file mode 100644
index 0000000..73a87a7
--- /dev/null
+++ b/fichiers/scripts/countlines-mk2.sh
@@ -0,0 +1,23 @@
1#!/bin/bash
2
3echo "Entrez le nom du fichier dont vous voulez compter les lignes:"
4read -p 'Fichier: ' file
5
6countlines () {
7 cat $1 | wc -l
8}
9
10if [ ! -e $file ] || [ -z $file ]
11 then
12 echo "Erreur: le fichier $file n'existe pas."
13 exit 1
14 else
15 numline=$(countlines $file)
16fi
17
18if [ $numline -le 1 ]
19 then
20 echo "Votre fichier $file compte $numline ligne."
21 else
22 echo "Votre fichier $file compte $numline lignes."
23fi
diff --git a/fichiers/scripts/countlines.sh b/fichiers/scripts/countlines.sh
new file mode 100644
index 0000000..3f7826f
--- /dev/null
+++ b/fichiers/scripts/countlines.sh
@@ -0,0 +1,25 @@
1#!/bin/bash
2
3echo "Entrez le nom du fichier dont vous voulez compter les lignes:"
4read -p 'Fichier: ' file
5
6numline=0
7
8if [ ! -e $file ] || [ -z $file ]
9 then
10 echo "Erreur: le fichier $file n'existe pas."
11 exit 1
12 else
13 while read -r line
14 # 'let' permet de poser des opérations arithmétiques;
15 # à la place, on aurait pu écrire: do ((++numline))
16 do let "numline = numline + 1"
17 done < $file
18fi
19
20if [ $numline -le 1 ]
21 then
22 echo "Votre fichier $file compte $numline ligne."
23 else
24 echo "Votre fichier $file compte $numline lignes."
25fi
diff --git a/fichiers/scripts/greaterthan.sh b/fichiers/scripts/greaterthan.sh
new file mode 100644
index 0000000..e79921e
--- /dev/null
+++ b/fichiers/scripts/greaterthan.sh
@@ -0,0 +1,11 @@
1#!/bin/bash
2if [ $1 -gt 10 ]
3then
4 echo "$1 est supérieur à 10"
5 if [ $1 -gt 100 ]
6 then
7 echo "et $1 est même supérieur à 100!"
8 fi
9else
10 echo "Il faut aller au-dessus de 10 pour avoir une réponse!"
11fi
diff --git a/fichiers/scripts/rah.sh b/fichiers/scripts/rah.sh
new file mode 100644
index 0000000..9219e0a
--- /dev/null
+++ b/fichiers/scripts/rah.sh
@@ -0,0 +1,13 @@
1#!/bin/bash
2
3read -p 'Combien de fois tirez-vous la queue du lion? ' rahtimes
4
5# Définition du compteur de rugissements:
6rah=1
7
8until [ $rah -gt $rahtimes ]
9do
10 echo "Raaaaaaaaahhhhhhhhhhhh! ($rah)"
11 sleep 1
12 ((++rah))
13done
diff --git a/fichiers/scripts/tiff2png.sh b/fichiers/scripts/tiff2png.sh
new file mode 100644
index 0000000..64b97f0
--- /dev/null
+++ b/fichiers/scripts/tiff2png.sh
@@ -0,0 +1,4 @@
1#!/bin/bash
2for file in $(basename -s .tiff $(ls *.tiff))
3 do convert "$file".tiff "$file".png
4done
diff --git a/makefile b/makefile
index 7ec9fe0..435f88f 100644
--- a/makefile
+++ b/makefile
@@ -12,9 +12,8 @@ pdf: clean
12clean: 12clean:
13 rm -rf .backup 13 rm -rf .backup
14 find -iname "*~" | xargs rm -rf 14 find -iname "*~" | xargs rm -rf
15 find ./* -type f | grep 'makefile\|\.md$$\|\.png$$\|\.bib$$\|\.tex$$' > ls-R 15 find ./* -type f | grep 'makefile\|\.md$$\|\.png$$\|\.sh$$\|\.bib$$\|\.tex$$' > ls-R
16 rsync -avPr --files-from=ls-R . .backup 16 rsync -avPr --files-from=ls-R . .backup
17# cp ls-R .backup
18 rm -rf * 17 rm -rf *
19 cp -p -r .backup/* . 18 cp -p -r .backup/* .
20 rm -rf .backup 19 rm -rf .backup