diff options
-rw-r--r-- | _preamble.tex | 4 | ||||
-rw-r--r-- | _preamble_bbl.tex | 20 | ||||
-rw-r--r-- | bibliography.bib | 6 | ||||
-rw-r--r-- | fichiers/03-grep-bash.tex | 165 | ||||
-rw-r--r-- | makefile | 2 |
5 files changed, 194 insertions, 3 deletions
diff --git a/_preamble.tex b/_preamble.tex index 78a8b52..5573be8 100644 --- a/_preamble.tex +++ b/_preamble.tex | |||
@@ -20,4 +20,6 @@ | |||
20 | \mailto[courses]{robert.alessi@cnrs.fr} | 20 | \mailto[courses]{robert.alessi@cnrs.fr} |
21 | \doclicenseThis} | 21 | \doclicenseThis} |
22 | \usepackage{widows-and-orphans} | 22 | \usepackage{widows-and-orphans} |
23 | \WaOsetup{avoid-all} \ No newline at end of file | 23 | \WaOsetup{avoid-all} |
24 | |||
25 | \usepackage{microtype} | ||
diff --git a/_preamble_bbl.tex b/_preamble_bbl.tex new file mode 100644 index 0000000..d7be120 --- /dev/null +++ b/_preamble_bbl.tex | |||
@@ -0,0 +1,20 @@ | |||
1 | \usepackage[style=footnote-dw, xref=true, loccittracker, opcittracker, | ||
2 | autopunct=false, ibidemfont=italic, idemfont=italic, | ||
3 | idembibformat=dash, nopublisher=false, annotation=true, pageref=true, | ||
4 | journalnumber=date, acronyms=true]{biblatex} | ||
5 | |||
6 | \DefineBibliographyExtras{french}{% | ||
7 | \renewcommand{\mkbibnamefamily}[1]{#1}% | ||
8 | } | ||
9 | \renewcommand{\mkbibacro}[1]{% | ||
10 | \textls[55]{\scalefont{0.95}#1}\isdot} | ||
11 | \renewcommand{\labelnamepunct}{\addperiod\space} | ||
12 | \DeclareLanguageMapping{french}{french-dw} | ||
13 | \DeclareFieldFormat[book]{title}{\mkbibemph{#1}} | ||
14 | \DeclareFieldFormat[book]{citetitle}{\mkbibemph{#1}} | ||
15 | \DeclareFieldFormat[article]{title}{\mkbibquote{#1}} | ||
16 | \DeclareFieldFormat[article]{citetitle}{\mkbibquote{#1}} | ||
17 | \DeclareFieldFormat[inreference]{citetitle}{\mkbibquote{#1}} | ||
18 | \DeclareFieldFormat{journaltitle}{\mkbibemph{#1}} | ||
19 | \DeclareFieldFormat{citejournaltitle}{\mkbibemph{#1}} | ||
20 | \addbibresource{../bibliography.bib} | ||
diff --git a/bibliography.bib b/bibliography.bib new file mode 100644 index 0000000..ec8c1eb --- /dev/null +++ b/bibliography.bib | |||
@@ -0,0 +1,6 @@ | |||
1 | @Online{Knuth1983, | ||
2 | author = {Knuth, Donald E.}, | ||
3 | title = {Literate Programming}, | ||
4 | year = 1983, | ||
5 | url = {http://www.literateprogramming.com/knuthweb.pdf}} | ||
6 | |||
diff --git a/fichiers/03-grep-bash.tex b/fichiers/03-grep-bash.tex index 21ed846..1be7502 100644 --- a/fichiers/03-grep-bash.tex +++ b/fichiers/03-grep-bash.tex | |||
@@ -1,4 +1,5 @@ | |||
1 | \input{../_preamble} | 1 | \input{../_preamble} |
2 | \input{../_preamble_bbl} | ||
2 | \usepackage{menukeys} | 3 | \usepackage{menukeys} |
3 | \title{grep et bash} | 4 | \title{grep et bash} |
4 | \usepackage{units} | 5 | \usepackage{units} |
@@ -17,6 +18,7 @@ | |||
17 | breaksymbolright=\small\carriagereturn} | 18 | breaksymbolright=\small\carriagereturn} |
18 | \setmintedinline{bgcolor=Lavender} | 19 | \setmintedinline{bgcolor=Lavender} |
19 | \usepackage{soul} | 20 | \usepackage{soul} |
21 | |||
20 | \begin{document} | 22 | \begin{document} |
21 | \maketitle | 23 | \maketitle |
22 | \renewcommand{\contentsname}{Sommaire} | 24 | \renewcommand{\contentsname}{Sommaire} |
@@ -88,7 +90,13 @@ symboles suivants\footnote{Cette liste n'est pas exhaustive.}: | |||
88 | \verb|[^abc]| & le caractère précédent n'est pas l'un de ceux qui se | 90 | \verb|[^abc]| & le caractère précédent n'est pas l'un de ceux qui se |
89 | trouvent entre les crochets droits\\ | 91 | trouvent entre les crochets droits\\ |
90 | \verb|[a-z]| & le caractère précédent est compris entre \emph{a} et | 92 | \verb|[a-z]| & le caractère précédent est compris entre \emph{a} et |
91 | \emph{z}, dans l'ordre de la table des caractères \\ | 93 | \emph{z}, dans l'ordre de la table des |
94 | caractères. C'est le sens du trait d'union entre les | ||
95 | lettres \verb|a| et \verb|z|. On peut bien sûr | ||
96 | combiner des chaînes avec et sans trait d'union. Par | ||
97 | exemple, \verb|[A-Ea-e]| correspond aux cinq | ||
98 | premières lettres de l'alphabet, en majuscule et en | ||
99 | minuscule. \\ | ||
92 | \verb|()| & ce qui est inclus entre les parenthèses est traité comme | 100 | \verb|()| & ce qui est inclus entre les parenthèses est traité comme |
93 | un groupe \\ | 101 | un groupe \\ |
94 | 102 | ||
@@ -182,4 +190,159 @@ booty meets shoot steen sweet tepee troop | |||
182 | \end{enumerate} | 190 | \end{enumerate} |
183 | \end{quoting} | 191 | \end{quoting} |
184 | 192 | ||
193 | \chapter{bash} | ||
194 | \label{cha:bash} | ||
195 | Comme on l'a vu, \verb|bash| est le \emph{shell} le plus répandu sur | ||
196 | les systèmes Linux aujourd'hui. On peut écrire en \verb|bash| des | ||
197 | \emph{scripts}, autrement dit de petits programmes informatiques, pour | ||
198 | réaliser des suites d'opérations plus ou moins complexes. | ||
199 | |||
200 | Voici un exemple très simple. Prenons les lignes suivantes: | ||
201 | \begin{minted}[linenos]{text} | ||
202 | mkdir sauvegarde | ||
203 | cp *.tex sauvegarde | ||
204 | zip -r sauvegarde.zip sauvegarde | ||
205 | \end{minted} | ||
206 | Ces trois lignes exécutent successivement les opérations suivantes: | ||
207 | \begin{enumerate} | ||
208 | \item Création d'un répertoire intitulé \verb|sauvegarde| | ||
209 | \item Copie de tous les fichiers \TeX{} dans le répertoire | ||
210 | \verb|sauvegarde| | ||
211 | \item Création d'une archive \verb|.zip| de tout le répertoire. | ||
212 | \end{enumerate} | ||
213 | |||
214 | Pour éviter de répéter ces trois lignes de commande et d'encourir le | ||
215 | risque de se tromper dans la saisie, on peut décider de les écrire | ||
216 | dans un fichier texte que l'on appellera par exemple \verb|backup.sh| | ||
217 | de la façon suivante: | ||
218 | \begin{minted}[linenos]{bash} | ||
219 | #!/bin/bash | ||
220 | mkdir sauvegarde | ||
221 | cp *.tex sauvegarde | ||
222 | zip -r sauvegarde.zip sauvegarde | ||
223 | \end{minted} | ||
224 | |||
225 | Il suffit alors de demander à \verb|bash| d'exécuter ce fichier pour | ||
226 | que les trois opérations soient réalisées d'un coup. Comme les scripts | ||
227 | écrits en \verb|bash| sont interprétés par le \textsl{shell} | ||
228 | \verb|bash|, \emph{toute ligne de commande peut être exécutée dans un | ||
229 | script}. Réciproquement, \emph{tout ce qui peut entrer dans un | ||
230 | script peut aussi être exécuté à la ligne de commande}. | ||
231 | |||
232 | \section{L'éditeur de texte} | ||
233 | \label{sec:lediteur-de-texte} | ||
234 | C'est dans un \emph{éditeur de texte} que l'on saisit tout code | ||
235 | informatique. Certains éditeurs de texte sont très simples à | ||
236 | utiliser. Nous allons prendre ici l'exemple de l'un des plus simples, | ||
237 | \verb|nano|. Pour le lancer, il suffit de saisir à la ligne de | ||
238 | commande: \mintinline{text}|nano|. Après avoir lancé \verb|nano| et | ||
239 | saisi le script donné ci-dessus, voici ce que l'on obtient: | ||
240 | \begin{minted}[linenos,fontsize=\footnotesize]{text} | ||
241 | GNU nano 2.8.2 Nouvel espace | ||
242 | |||
243 | #!/bin/bash | ||
244 | mkdir sauvegarde | ||
245 | cp *.tex sauvegarde | ||
246 | zip -r sauvegarde.zip sauvegarde | ||
247 | |||
248 | |||
249 | |||
250 | |||
251 | |||
252 | |||
253 | |||
254 | |||
255 | |||
256 | |||
257 | |||
258 | |||
259 | |||
260 | |||
261 | |||
262 | |||
263 | |||
264 | ^G Aide ^O Écrire ^W Chercher ^K Couper ^J Justifier ^C Pos. cur. | ||
265 | ^X Quitter ^R Lire fich.^\ Remplacer ^U Coller ^T Orthograp.^_ Aller lig. | ||
266 | \end{minted} | ||
267 | |||
268 | Les lignes 24 et 25 correspondent au menu de \verb|nano|. On n'y | ||
269 | accède pas par la souris, mais à l'aide des \emph{raccourcis clavier} | ||
270 | qui sont tous préfixés par le \emph{caret} (\verb|^|) qui représente | ||
271 | la touche \keys{Ctrl} du clavier. Donc pour quitter le programme, on | ||
272 | appuiera sur \keys{Ctrl-X}: voici ce que montre \verb|nano| au bas du | ||
273 | terminal après avoir saisi \keys{Ctrl-X}: | ||
274 | \begin{minted}[linenos,fontsize=\footnotesize]{text} | ||
275 | Écrire l'espace modifié ? (Répondre « Non » ABANDONNE les modifications.) | ||
276 | O Oui | ||
277 | N Non ^C Annuler | ||
278 | \end{minted} | ||
279 | Les opérations suivantes sont donc possibles: | ||
280 | \begin{enumerate} | ||
281 | \item \keys{O}: sauvegarde le fichier. | ||
282 | \item \keys{N}: quitte \verb|nano| sans sauvegarder. | ||
283 | \item \keys{Ctrl-C}: annule l'opération et retourne à l'éditeur de texte. | ||
284 | \end{enumerate} | ||
285 | Appuyons sur la touche \keys{O}. \verb|nano| nous invite alors à | ||
286 | entrer le nom du script: | ||
287 | \begin{minted}[linenos,fontsize=\footnotesize]{text} | ||
288 | Nom du fichier à écrire: backup.sh | ||
289 | ^G Aide M-D Format DOS M-A Ajout (à la fin)M-B Copie de sécu. | ||
290 | ^C Annuler M-M Format Mac M-P Ajout (au début)^T Parcourir | ||
291 | \end{minted} | ||
292 | Après avoir entré le nom du fichier et appuyé sur la touche | ||
293 | \keys{Enter} pour confirmer le choix, on retourne au terminal et à la | ||
294 | ligne de commande. | ||
295 | |||
296 | \section{Le \emph{shebang}} | ||
297 | \label{sec:le-shebang} | ||
298 | La première ligne du script \verb|backup.sh| donné en exemple | ||
299 | ci-dessus appelle un commentaire particulier: | ||
300 | \begin{minted}[linenos]{bash} | ||
301 | #!/bin/bash | ||
302 | \end{minted} | ||
303 | |||
304 | Dans cette ligne, la séquence \mintinline{bash}|#!| s'appelle le | ||
305 | \emph{shebang}. Par convention, le \emph{shebang} est un préfixe que | ||
306 | l'on fait suivre du nom du programme qui doit interpréter le script, | ||
307 | précédé de son chemin d'accès absolu. | ||
308 | |||
309 | Le \emph{shebang} est important car il permet d'accéder aux | ||
310 | interpréteurs auxquels on souhaite accéder depuis la ligne de | ||
311 | commande. Par exemple, pour un script écrit en Python2, la première | ||
312 | ligne sera: | ||
313 | \begin{minted}[linenos]{python} | ||
314 | #!/usr/bin/env python2 | ||
315 | """ | ||
316 | Mon premier script en Python | ||
317 | """ | ||
318 | print("bonjour le monde!") | ||
319 | \end{minted} | ||
320 | |||
321 | \section{Les commentaires} | ||
322 | \label{sec:les-commentaires} | ||
323 | En \verb|bash|, tout ce qui, sur une même ligne, suit le signe | ||
324 | \mintinline{bash}|#| \emph{n'est ni interprété, ni exécuté}. On | ||
325 | utilise donc ce signe pour introduire des \emph{commentaires} dans le | ||
326 | code informatique. | ||
327 | |||
328 | Les commentaires ne servent pas uniquement à introduire des remarques | ||
329 | pour son usage personnel. Ils servent aussi, et surtout, à donner des | ||
330 | indications sur le code lui-même pour permettre aux autres de mieux | ||
331 | comprendre la programmation. Si le code est bien commenté, alors on | ||
332 | doit pouvoir le lire comme on lit un livre. Cela est très important | ||
333 | car les programmes longs et complexes dépassent souvent et parfois | ||
334 | même survivent à leur auteur. | ||
335 | |||
336 | Si le code est bien compris, il sera facilement mis à jour, corrigé et | ||
337 | augmenté par d'autres programmeurs. | ||
338 | |||
339 | L'art de commenter le code informatique tout en l'écrivant porte le | ||
340 | nom de \emph{literate programming}. Il a été inventé par Donald | ||
341 | E.~Knuth, le créateur de \TeX, qui a posé tous les principes de cet | ||
342 | art dans le cadre de la programmation en | ||
343 | \textsf{WEB}\footnote{\cite{Knuth1983}. Voir également en ligne | ||
344 | \url{http://www.literateprogramming.com/}}. | ||
345 | |||
346 | \hfill\verb|../..| à suivre | ||
347 | |||
185 | \end{document} | 348 | \end{document} |
@@ -12,7 +12,7 @@ pdf: clean | |||
12 | clean: | 12 | clean: |
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$$\|\.tex$$' > ls-R | 15 | find ./* -type f | grep 'makefile\|\.md$$\|\.png$$\|\.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 | 17 | # cp ls-R .backup |
18 | rm -rf * | 18 | rm -rf * |