aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--_preamble.tex10
-rw-r--r--fichiers/01-ligne-de-commande.tex368
-rw-r--r--makefile7
3 files changed, 373 insertions, 12 deletions
diff --git a/_preamble.tex b/_preamble.tex
index a0b261e..7041fd2 100644
--- a/_preamble.tex
+++ b/_preamble.tex
@@ -1,14 +1,12 @@
1\documentclass{scrbook} 1\documentclass[open=any, DIV=classic]{scrbook}
2\usepackage[french]{babel} 2\usepackage[french]{babel}
3 3
4\usepackage{fontspec} 4\usepackage{fontspec}
5\setmainfont{Old Standard}
6\addtokomafont{disposition}{\rmfamily} 5\addtokomafont{disposition}{\rmfamily}
7 6
8\usepackage{csquotes} 7\usepackage{csquotes}
9\usepackage{etoolbox} 8\usepackage[font=footnotesize, rightmargin=0pt]{quoting}
10\usepackage{tikz} 9\usepackage[svgnames]{xcolor}
11\usepackage[breakable, skins, listings, xparse]{tcolorbox}
12 10
13\usepackage{hyperref} 11\usepackage{hyperref}
14\hypersetup{unicode,colorlinks} 12\hypersetup{unicode,colorlinks}
@@ -18,4 +16,4 @@
18\author{Robert Alessi} 16\author{Robert Alessi}
19\lowertitleback{\footnotesize\textcopyright{} 2018 Robert Alessi 17\lowertitleback{\footnotesize\textcopyright{} 2018 Robert Alessi
20 \mailto[courses]{robert.alessi@cnrs.fr} 18 \mailto[courses]{robert.alessi@cnrs.fr}
21 \doclicenseThis} \ No newline at end of file 19 \doclicenseThis}
diff --git a/fichiers/01-ligne-de-commande.tex b/fichiers/01-ligne-de-commande.tex
index 28a6241..d4a670f 100644
--- a/fichiers/01-ligne-de-commande.tex
+++ b/fichiers/01-ligne-de-commande.tex
@@ -1,8 +1,370 @@
1\input{../_preamble} 1\input{../_preamble}
2\title{Test} 2\usepackage{menukeys}
3\title{La ligne de commande}
4\usepackage{dingbat}
5\usepackage{mdframed}
6\mdfsetup{
7 backgroundcolor=Lavender,
8 hidealllines=true}
9\usepackage{minted}
10\surroundwithmdframed{minted}
11\setminted{
12 breaklines,
13 breaksymbolright=\small\carriagereturn}
14\setmintedinline{bgcolor=Lavender}
3\begin{document} 15\begin{document}
4\maketitle 16\maketitle
5\tableofcontents 17
6\addchap{Introduction} 18\chapter{Introduction}
19\label{cha:introduction}
20La \emph{ligne de commande} est avant tout une interface de
21communication avec l'ordinateur, tout comme le sont les interfaces
22graphiques auxquelles nous sommes habitués. Les interfaces graphiques
23telles que le \emph{Bureau} sous Windows ou bien le \emph{Finder} sous
24Mac OS sont en réalité comme une couche qui se superpose à la ligne de
25commande, qui continue toujours à exister. Tout en masquant à
26l'utilisateur la ligne de commande, elles traduisent néanmoins en
27ligne de commande les opérations qui sont faites à l'aide de la
28souris.
29
30\paragraph{Exemple} Supposons que l'on veuille créer un
31répertoire\footnote{C'est ansi que l'on appellera ce qui, sous Windows
32 et Mac OS X, se nomme \emph{dossier}.} nommé \emph{travail} sur le
33bureau, puis déplacer dans ce réperoire un fichier \emph{exemple.pdf}
34que l'on vient de créer. À l'aide de la souris, on doit à peu près
35effectuer les opérations suivantes:
36\begin{enumerate}
37\item faire un simple-clic du bouton droit de la souris, et choisir
38 \menu{Dossier>Nouveau} dans le menu contextuel qui s'affiche;
39\item dans la fenêtre qui s'affiche, saisir le nom du nouveau
40 répertoire: \directory{travail}, puis cliquer sur le bouton
41 \menu{Ok};
42\item dernière opération, le déplacement du fichier
43 \emph{exemple.pdf}: à l'aide du bouton gauche de la souris, faire
44 glisser le fichier \emph{exemple.pdf} sur l'icône du répertoire
45 \emph{travail}, et relâcher le bouton à ce moment.
46\end{enumerate}
47Pour réaliser les mêmes opérations à la ligne de commande, il aurait
48fallu saisir les lignes suivantes:
49\begin{enumerate}
50\item création du dossier \emph{travail}:\\
51 \mintinline{bash}{mkdir travail}
52\item déplacement du fichier \emph{exemple.pdf} dans le dossier
53 travail: \\
54\mintinline{bash}{mv exemple.pdf travail}
55\end{enumerate}
56
57\paragraph{Commentaire}
58Il faut bien comprendre que le rôle de l'interface graphique n'est que
59de traduire en lignes de commande les opérations que nous effectuons à
60l'aide de la souris. Reprenons à présent les deux dernières lignes de
61commande pour mieux les comprendre:
62\label{sec:commentaire}
63\begin{enumerate}
64\item dans \og\mintinline{bash}{mkdir travail}\fg,
65 \mintinline{bash}{mkdir} est le nom d'un programme fait pour créer
66 des répertoires; \mintinline{bash}{mkdir} est en effet pour
67 l'anglais \emph{make directory}. Quant à \emph{travail}, c'est tout
68 simplement le nom du répertoire qu'on veut faire créer par le
69 programme \mintinline{bash}{mkdir}. La terminologie est la suivante:
70 \mintinline{bash}{mkdir} est le nom du programme, et
71 \mintinline{bash}{travail} est \emph{l'argument} que l'on passe à
72 \mintinline{bash}{mkdir}. Remarquez que l'on doit séparer l'argument
73 du nom du programme par un espace. Pour terminer, on appuie sur la
74 touche \emph{Entrée} pour commander l'exécution du programme.
75\item dans \og\mintinline{bash}{mv exemple.pdf travail}\fg, le nom du
76 programme est \mintinline{bash}{mv}, pour l'anglais \emph{move}; sa
77 fonction est de déplacer des fichiers ou des répertoires. Comme son
78 comportement, par rapport au programme \mintinline{bash}{mkdir}, est
79 différent, il accepte non pas un, mais deux arguments, chacun séparé
80 par des espaces. Observez de nouveau cette ligne de commande:
81 tandis que le premier argument est le nom du fichier que l'on
82 souhaite déplacer, le deuxième est le nom du répertoire de
83 destination de ce fichier. Pour terminer, de la même manière que
84 précédemment, on appuie sur la touche \emph{Entrée} pour commander
85 le déplacement du fichier.
86\end{enumerate}
87
88Par cet exemple, on espère faire comprendre que si la syntaxe de la
89ligne de commande peut paraître au premier abord difficile à
90maîtriser, elle permet aussi, par sa sobriété même, de réaliser de
91manière bien plus rapide et bien plus sûre les opérations que l'on
92fait à l'aide de la souris. En voici les principales raisons:
93\begin{itemize}
94\item l'interface graphique est une surcouche logicielle; elle
95 ralentit donc le système d'exploitation;
96\item l'interface graphique, comme tout logiciel très complexe,
97 comporte des erreurs de programmation. Ces \emph{bugs} peuvent aller
98 jusqu'à bloquer com\-plè\-te\-ment le système d'exploitation;
99\item à l'aide de l'interface graphique, on ne peut réaliser que les
100 équivalents en ligne de commande qui ont été prévus par les
101 programmeurs. En se privant de la ligne de commande, l'utilisateur
102 se prive donc aussi de pouvoir réaliser les opérations qui ont été
103 laissées de côté\footnote{C'est d'ailleurs ainsi, bien souvent, que
104 les techniciens compétents dépannent les ordinateurs: en réalisant
105 des commandes auxquelles l'interface graphique ne permet pas
106 d'accéder.};
107\item les lignes de commande peuvent être chaînées. Ainsi, par la
108 simple ligne\\ \mintinline{bash}{mkdir travail ; mv exemple.pdf
109 travail} on peut réaliser en une seule fois toutes les opérations
110 décrites pré\-cé\-dem\-ment. Il suffit, comme on le voit ici, de
111 séparer les commandes par un point-virgule \mintinline{bash}{;};
112\item les lignes de commande acceptent des caractères appelés
113 \emph{jokers} à l'aide desquels on peut déclencher des opérations
114 complexes, portant sur un très grand nombre de fichiers. Par
115 exemple, le caractère \mintinline{bash}{*} peut se substituer à
116 n'importe quelle chaîne de caractères. Ainsi, pour reprendre ce qui
117 précède, la commande\\ \mintinline{bash}{mv *.pdf travail} aura pour
118 effet de déplacer automatiquement tous les fichiers au format
119 \verb|PDF| dans le répertoire \emph{travail}.
120\end{itemize}
121
122En d'autres termes, en passant par la ligne de commande, l'utilisateur
123gagne en sécurité, en rapidité et en maîtrise du système ce qu'il perd
124en ergonomie.
125
126\section{Lancement du terminal}
127\label{sec:lanc-du-term}
128\begin{enumerate}
129\item Sous Linux, il suffit de rechercher dans le menu une application
130 nommée \emph{terminal} ou \emph{xterm} dans les \emph{outils
131 système}.
132\item Sous MacOs, l'application s'appelle \emph{terminal}. Elle donne
133 accès à un nombre limité de commandes.
134\item Sous Windows, il faut installer \emph{Cygwin} qui est disponible
135 à l'adresse suivante: \url{https://cygwin.com}. Pour savoir comment
136 faire:
137 \begin{enumerate}
138 \item \url{https://x.cygwin.com/docs/ug/setup.html} (en anglais)
139 \item \url{http://migale.jouy.inra.fr/?q=fr/cygwin-install} (en
140 français: dans ce document, il faut cependant sauter le point 10a)
141 \end{enumerate}
142\end{enumerate}
143
144\chapter{Chemins d'accès et premières commandes}
145\label{cha:les-chemins-dacces}
146Les commandes portent le plus souvent sur des fichiers. Il est donc
147important, pour savoir où se trouvent les fichiers que vous voulez
148traiter, de connaître leur \emph{chemin d'accès}.
149
150\section{Chemins relatifs et absolus}
151\label{sec:chemins-relatifs-et}
152
153\paragraph{Le home directory}
154\label{sec:le-home-directory}
155Dans les systèmes Linux, tous vos fichiers se trouvent dans votre
156répertoire personnel, appelé le \emph{home directory}. Le nom de votre
157répertoire personnel est le même que celui de l'identifiant sous
158lequel vous vous êtes connecté. Par ailleurs, tous les répertoires des
159différents utilisateurs sont situés à la racine du disque dur dans un
160répertoire fondamental appelé \mintinline{bash}{home}.
161
162Supposons que votre identifiant soit \mintinline{bash}{jacques}; votre
163répertoire personnel sera donc:
164\begin{minted}{bash}
165/home/jacques
166\end{minted}
167Obervez attentivement cette ligne. Vous remarquez que les noms des
168répertoires sont séparés par le caractère \mintinline{bash}{/}. Cela
169veut dire que le signe \mintinline{bash}{/} est utilisé pour indiquer
170que l'on passe d'un répertoire donné à l'un de ses
171sous-répertoires. Dans notre exemple, le répertoire
172\mintinline{bash}{jacques} est donc inclus dans le répertoire
173\mintinline{bash}{home}.
174
175Remarquez encore le \mintinline{bash}{/} qui est placé \emph{devant}
176\mintinline{bash}{home}: comme il n'est lui-même précédé de rien, il
177indique que le répertoire \mintinline{bash}{home} est placé \emph{à la
178 racine du disque dur}.
179
180\paragraph{Definition: chemins absolus, chemins relatifs}
181\label{sec:chem-absol-chem}
182Un chemin d'accès est dit \emph{absolu} quand il est donné à partir de
183la racine du disque dur. Il est \emph{relatif} quand il est donné à
184partir de tout autre endroit du disque dur. Soit par exemple le
185répertoire \mintinline{bash}{travail} créé par l'utilisateur
186\mintinline{bash}{jacques} dans son répertoire personnel. À partir de
187ce répertoire, le chemin d'accès absolu sera
188\begin{minted}{bash}
189/home/jacques/travail/
190\end{minted}
191tandis que le chemin relatif sera
192\begin{minted}{bash}
193travail/
194\end{minted}
195Corrolaire: tout chemin d'accès absolu commence nécessairement par le
196caractère \mintinline{bash}{/}; quand ce n'est pas le cas, le chemin
197d'accès est nécessairement relatif.
198
199\paragraph{Conventions}
200\label{sec:conventions}
201Il existe un grand nombre de raccourcis ou de signes conventionnels
202qui sont utilisés dans la ligne de commande. On en retiendra trois
203pour le moment:
204\begin{itemize}
205\item \emph{home directory}: depuis tout endroit du disque dur, tout
206 utilisateur peut accéder à son répertoire personnel par le raccourci
207\begin{minted}{bash}
208~/
209\end{minted}
210 Ainsi, pour l'utilisateur \mintinline{bash}{jacques},
211 \mintinline{bash}{~/travail} est l'équivalent de \\
212 \mintinline{bash}{/home/jacques/travail}.
213\item répertoire parent: quel que soit le répetoire dans lequel on se
214 trouve, la séquence \mintinline{bash}{..} désigne le
215 \emph{répertoire parent}, c'est-à-dire le répertoire qui le
216 contient, ou bien qui est situé au niveau supérieur dans
217 l'arborescence du disque dur. Par exemple, à partir du répertoire
218 \mintinline{bash}{/home/jacques/travail}, \mintinline{bash}{..}
219 désigne le répertoire \mintinline{bash}{/home/jacques}.
220\item répertoire courant: Quant au signe \og\mintinline{bash}{.}\fg,
221 il désigne tout simplement le répertoire dans lequel on se trouve.
222\end{itemize}
223
224\section{Premières commandes}
225\label{sec:prem-comm}
226
227\paragraph{pwd}
228\label{sec:pwd}
229Signifie \emph{print working directory}. Cette commande vous retourne
230tout simplement le chemin d'accès absolu du répertoire dans lequel
231vous vous trouvez. Très utile pour ne pas se perdre! Exemple:
232\begin{minted}{bash}
233[robert@kiddo ~]$ pwd
234/home/robert
235\end{minted}
236\begin{quoting}\footnotesize
237 La séquence \mintinline{bash}+[robert@kiddo ~]$+ est \emph{l'invite
238 de commande} (anglais \emph{prompt}). C'est à la suite de cette
239 invite que l'on entre les commandes. Nous y reviendrons. Observez
240 pour le moment quelques unes des informations données par cette
241 invite: l'utilisateur \mintinline{bash}{robert} est connecté sur
242 l'ordinateur \mintinline{bash}{kiddo}; ensuite, le signe
243 \mintinline{bash}+~+ indique qu'il se trouve dans son \emph{home
244 directory}, ce que retourne en effet la commande
245 \mintinline{bash}+pwd+ qui a été entrée ici. Enfin, le signe
246 \mintinline{bash}|$| indique que l'utilisateur
247 \mintinline{bash}|robert| n'est pas l'administrateur du système. En
248 effet, le \emph{prompt} de l'administrateur du système, que l'on
249 appelle \emph{root}, se termine par le signe
250 \mintinline{bash}|#|. Exemple:
251\begin{minted}{bash}
252[root@kiddo ~]# pwd
253/root
254[root@kiddo ~]#
255\end{minted}
256 Remarquez que le \emph{home directory} de l'utilisateur
257 \mintinline{bash}|root| n'est pas situé dans le répertoire
258 \mintinline{bash}|/home| qui est réservé aux utilisateurs non
259 privilégiés.
260\end{quoting}
261
262\paragraph{mv}
263\label{sec:mv}
264Signifie \emph{move}. Cette commande déplace les fichiers d'un endroit
265vers un autre. La syntaxe est la suivante:
266\begin{minted}[showspaces]{bash}
267mv <source> <destination>
268\end{minted}
269\begin{quoting}\footnotesize
270 Par convention, le signe \verb*+ + marque l'espace.
271\end{quoting}
272Exemple: déplacement du fichier \mintinline{bash}{trachiniennes.pdf}
273dans le répertoire \mintinline{bash}{travail}:
274\begin{minted}{bash}
275[robert@kiddo ~]$ mv trachiniennes.pdf travail/
276\end{minted}
277Déplacement du fichier \mintinline{bash}{trachiniennes.pdf} depuis le
278répertoire \mintinline{bash}{travail} vers le répertoire courant
279(désigné par le raccourci \mintinline{bash}|.|):
280\begin{minted}{bash}
281[robert@kiddo ~]$ mv travail/trachiniennes.pdf .
282\end{minted}
283Déplacement avec indication des chemins absolus:
284\begin{minted}{bash}
285[robert@kiddo ~]$ mv /home/robert/trachiniennes.pdf /home/robert/travail/
286\end{minted}
287Utilisation de raccourcis:
288\begin{minted}{bash}
289[robert@kiddo ~]$ mv ~/trachiniennes.pdf ~/travail/
290\end{minted}
291
292\paragraph{cp}
293\label{sec:cp}
294Signifie \emph{copy}. Cette commande copie des fichiers depuis un
295endroit vers un autre. La syntaxe est comparable à celle de la
296séquence \mintinline{bash}{mv}.
297\begin{minted}[showspaces]{bash}
298cp <source> <destination>
299\end{minted}
300Exemple: copie du fichier \mintinline{bash}{trachiniennes.pdf} dans le
301répertoire \mintinline{bash}{travail}:
302\begin{minted}{bash}
303[robert@kiddo ~]$ cp trachiniennes.pdf travail/
304\end{minted}
305Copie du fichier \mintinline{bash}{trachiniennes.pdf} depuis le
306répertoire \mintinline{bash}{travail} vers le répertoire courant
307(désigné par le raccourci \mintinline{bash}|.|):
308\begin{minted}{bash}
309[robert@kiddo ~]$ cp travail/trachiniennes.pdf .
310\end{minted}
311Copie avec indication des chemins absolus:
312\begin{minted}{bash}
313[robert@kiddo ~]$ cp /home/robert/trachiniennes.pdf /home/robert/travail/
314\end{minted}
315Utilisation de raccourcis:
316\begin{minted}{bash}
317[robert@kiddo ~]$ cp ~/trachiniennes.pdf ~/travail/
318\end{minted}
319
320\paragraph{cd}
321\label{sec:cd}
322Signifie \emph{change directory}. Permet de changer de répertoire
323courant, par exemple pour travailler sur les fichiers d'un répertoire
324différent de son \emph{home directory}. La syntaxe est la suivante:
325\begin{minted}[showspaces]{bash}
326cd <"chemin_d'accès_du_nouveau_répertoire">
327\end{minted}
328
329Exemple: changement vers le répertoire \mintinline{bash}|/usr/bin|:
330\begin{minted}{bash}
331[robert@kiddo ~]$ cd /usr/bin
332[robert@kiddo /usr/bin]$
333\end{minted}
334\begin{quoting}\footnotesize
335 Remarquez le changement de l'invite après l'exécution de la
336 commande. L'invite nous donne l'indication du nouveau répertoire.
337\end{quoting}
338Confirmation par la commande \mintinline{bash}{pwd}:
339\begin{minted}{bash}
340[robert@kiddo /usr/bin]$ pwd
341/usr/bin
342[robert@kiddo /usr/bin]$
343\end{minted}
344\begin{quoting}\footnotesize
345 NB: la commande \mintinline{bash}{cd} seule fait revenir l'utilisateur
346 directement dans son \emph{home directory}.
347\end{quoting}
348
349\paragraph{ls}
350\label{sec:ls}
351Signifie \emph{list}. Affiche à l'écran tous les fichiers et les
352répertoires contenus dans un répertoire donné. Si on ne précise pas le
353répertoire dont il faut lister les fichiers, la commande liste les
354fichiers du répertoire courant. Exemple: on vérifie que le fichier
355\mintinline{bash}{trachiniennes.pdf} se trouve bien dans le répertoire
356travail:
357\begin{minted}{bash}
358[robert@kiddo ~]$ ls travail/
359trachiniennes.pdf
360\end{minted}
361\begin{quoting}\footnotesize
362 Comme on le voit, la commande retourne le nom du seul fichier qui se
363 trouve dans le répertoire \mintinline{bash}{travail}.\\
364 La commande \mintinline{bash}{ls} est l'une des plus importantes;
365 elle admet de nombreuses options que nous détaillerons plus loin
366 dans ce cours.
367\end{quoting}
368
7 369
8\end{document} 370\end{document}
diff --git a/makefile b/makefile
index 81236ac..25be7fc 100644
--- a/makefile
+++ b/makefile
@@ -1,17 +1,18 @@
1all: clean 1all: pdf
2 2
3pdf: clean 3pdf: clean
4 find ./* -type f | grep -v '_.*.tex' | grep 'tex$$' > texfiles 4 find ./* -type f | grep -v '_.*.tex' | grep 'tex$$' > texfiles
5 while read l ; do \ 5 while read l ; do \
6 latexmk -quiet -cd -lualatex $$l ; \ 6 latexmk -quiet -cd -lualatex -e '$$lualatex=q/lualatex %O --shell-escape %S/' $$l ; \
7 done < texfiles 7 done < texfiles
8 while read l ; do \ 8 while read l ; do \
9 latexmk -c -cd -lualatex $$l ; \ 9 latexmk -c -cd -lualatex $$l ; \
10 done < texfiles 10 done < texfiles
11 find -type d | grep -i "_minted.*" | xargs rm -rf
11clean: 12clean:
12 rm -rf .backup 13 rm -rf .backup
13 find -iname "*~" | xargs rm -rf 14 find -iname "*~" | xargs rm -rf
14 find ./* -type f | grep 'makefile\|md$$\|tex$$' > ls-R 15 find ./* -type f | grep 'makefile\|\.md$$\|\.tex$$' > ls-R
15 rsync -avPr --files-from=ls-R . .backup 16 rsync -avPr --files-from=ls-R . .backup
16 cp ls-R .backup 17 cp ls-R .backup
17 rm -rf * 18 rm -rf *