aboutsummaryrefslogtreecommitdiff
path: root/fichiers
diff options
context:
space:
mode:
authorRobert Alessi <alessi@robertalessi.net>2018-09-16 21:27:27 +0200
committerRobert Alessi <alessi@robertalessi.net>2018-09-16 21:27:27 +0200
commit7669c6247493285bd9202115d421df65e5b3069e (patch)
tree1417acef551d8c2fc5b992a926d258d704184fc9 /fichiers
parentb48a17d8cbdd7a2017dde05cc0017ad7fcc0d5e9 (diff)
downloadcourses-7669c6247493285bd9202115d421df65e5b3069e.tar.gz
still writing 03-grep-bash.tex
Diffstat (limited to 'fichiers')
-rw-r--r--fichiers/03-grep-bash.tex165
1 files changed, 164 insertions, 1 deletions
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}
195Comme on l'a vu, \verb|bash| est le \emph{shell} le plus répandu sur
196les systèmes Linux aujourd'hui. On peut écrire en \verb|bash| des
197\emph{scripts}, autrement dit de petits programmes informatiques, pour
198réaliser des suites d'opérations plus ou moins complexes.
199
200Voici un exemple très simple. Prenons les lignes suivantes:
201\begin{minted}[linenos]{text}
202mkdir sauvegarde
203cp *.tex sauvegarde
204zip -r sauvegarde.zip sauvegarde
205\end{minted}
206Ces 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
214Pour éviter de répéter ces trois lignes de commande et d'encourir le
215risque de se tromper dans la saisie, on peut décider de les écrire
216dans un fichier texte que l'on appellera par exemple \verb|backup.sh|
217de la façon suivante:
218\begin{minted}[linenos]{bash}
219#!/bin/bash
220mkdir sauvegarde
221cp *.tex sauvegarde
222zip -r sauvegarde.zip sauvegarde
223\end{minted}
224
225Il suffit alors de demander à \verb|bash| d'exécuter ce fichier pour
226que 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}
234C'est dans un \emph{éditeur de texte} que l'on saisit tout code
235informatique. Certains éditeurs de texte sont très simples à
236utiliser. 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
238commande: \mintinline{text}|nano|. Après avoir lancé \verb|nano| et
239saisi 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
244mkdir sauvegarde
245cp *.tex sauvegarde
246zip -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
268Les lignes 24 et 25 correspondent au menu de \verb|nano|. On n'y
269accède pas par la souris, mais à l'aide des \emph{raccourcis clavier}
270qui sont tous préfixés par le \emph{caret} (\verb|^|) qui représente
271la touche \keys{Ctrl} du clavier. Donc pour quitter le programme, on
272appuiera sur \keys{Ctrl-X}: voici ce que montre \verb|nano| au bas du
273terminal 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}
279Les 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}
285Appuyons sur la touche \keys{O}. \verb|nano| nous invite alors à
286entrer le nom du script:
287\begin{minted}[linenos,fontsize=\footnotesize]{text}
288Nom 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}
292Aprè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
294ligne de commande.
295
296\section{Le \emph{shebang}}
297\label{sec:le-shebang}
298La première ligne du script \verb|backup.sh| donné en exemple
299ci-dessus appelle un commentaire particulier:
300\begin{minted}[linenos]{bash}
301#!/bin/bash
302\end{minted}
303
304Dans cette ligne, la séquence \mintinline{bash}|#!| s'appelle le
305\emph{shebang}. Par convention, le \emph{shebang} est un préfixe que
306l'on fait suivre du nom du programme qui doit interpréter le script,
307précédé de son chemin d'accès absolu.
308
309Le \emph{shebang} est important car il permet d'accéder aux
310interpréteurs auxquels on souhaite accéder depuis la ligne de
311commande. Par exemple, pour un script écrit en Python2, la première
312ligne sera:
313\begin{minted}[linenos]{python}
314#!/usr/bin/env python2
315"""
316 Mon premier script en Python
317"""
318print("bonjour le monde!")
319\end{minted}
320
321\section{Les commentaires}
322\label{sec:les-commentaires}
323En \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
325utilise donc ce signe pour introduire des \emph{commentaires} dans le
326code informatique.
327
328Les commentaires ne servent pas uniquement à introduire des remarques
329pour son usage personnel. Ils servent aussi, et surtout, à donner des
330indications sur le code lui-même pour permettre aux autres de mieux
331comprendre la programmation. Si le code est bien commenté, alors on
332doit pouvoir le lire comme on lit un livre. Cela est très important
333car les programmes longs et complexes dépassent souvent et parfois
334même survivent à leur auteur.
335
336Si le code est bien compris, il sera facilement mis à jour, corrigé et
337augmenté par d'autres programmeurs.
338
339L'art de commenter le code informatique tout en l'écrivant porte le
340nom de \emph{literate programming}. Il a été inventé par Donald
341E.~Knuth, le créateur de \TeX, qui a posé tous les principes de cet
342art 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}