aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Alessi <alessi@robertalessi.net>2018-09-17 23:22:58 +0200
committerRobert Alessi <alessi@robertalessi.net>2018-09-17 23:22:58 +0200
commit72028c612738d067ba040c2a6251a296ed7e559c (patch)
tree2674664e32b38f37a4ef11f2f84ee19046e69d8d
parent37685da1392145fc4c210a6129de82eb7e06ea69 (diff)
downloadcourses-72028c612738d067ba040c2a6251a296ed7e559c.tar.gz
still writing 03-grep-bash.tex
-rw-r--r--fichiers/03-grep-bash.tex129
1 files changed, 129 insertions, 0 deletions
diff --git a/fichiers/03-grep-bash.tex b/fichiers/03-grep-bash.tex
index 1be7502..638adfd 100644
--- a/fichiers/03-grep-bash.tex
+++ b/fichiers/03-grep-bash.tex
@@ -343,6 +343,135 @@ art dans le cadre de la programmation en
343\textsf{WEB}\footnote{\cite{Knuth1983}. Voir également en ligne 343\textsf{WEB}\footnote{\cite{Knuth1983}. Voir également en ligne
344 \url{http://www.literateprogramming.com/}}. 344 \url{http://www.literateprogramming.com/}}.
345 345
346\section{Exécution}
347\label{sec:execution}
348Il faut ici approfondir la notion de \emph{permissions} sur les
349fichiers qui a été présentée dans le cours sur la
350\href{https://notabug.org/ralessi/courses/src/master/fichiers/01-ligne-de-commande.tex#L451}{ligne
351 de commande}. Nous avons en effet étudié trois types de permissions
352sur les fichiers: en lecture, en écriture et en exécution. Revenons
353sur les permissions données par défaut au script \verb|backup.sh|:
354\begin{minted}{text}
355[robert@kiddo courses]$ ls -l backup.sh
356-rw-r--r-- 1 robert robert 82 17 sept. 22:06 backup.sh
357\end{minted}
358Soit:
359\begin{itemize}
360\item lecture et écriture pour l'utilisateur \verb|robert| (\verb|rw|);
361\item lecture seule pour le groupe \verb|robert| (\verb|r|);
362\item lecture seule pour le reste du monde (\verb|r|)
363\end{itemize}
364
365\paragraph{chmod}
366La commande qui permet de changer les droits s'appelle
367\verb|chmod|. Pour comprendre comment l'utiliser, il faut savoir que
368les permissions sont traduites par des valeurs numériques, à savoir:
369\begin{itemize}
370\item 4 pour le droit \emph{lecture};
371\item 2 pour le droit \emph{écriture};
372\item 1 pour le droit \emph{exécution}.
373\end{itemize}
374Ces valeurs peuvent être additionnées. On analyse donc ainsi les
375permissions sur le fichier \verb|backup.sh|:
376\begin{itemize}
377\item utilisateur \verb|robert|, lecture + écriture: $4+2=6$;
378\item groupe \verb|robert|, lecture: $4$;
379\item reste du monde, lecture: $4$.
380\end{itemize}
381Soit $644$. Pour ajouter à l'utilisateur \verb|robert| seulement la
382permission en exécution, il faudrait donc porter cette valeur à
383$744$. Nous allons ici donner ce droit à la fois à \verb|robert|, au
384groupe \verb|robert| et au reste du monde, soit une valeur de
385$755$. La syntaxe est la suivante:
386\begin{minted}{text}
387chmod xyz <fichier>
388\end{minted}
389où \verb|xyz| sont les trois chiffres qui représentent les permissions.
390\begin{minted}[escapeinside=||, linenos]{text}
391[robert@kiddo courses]$ chmod 755 backup.sh
392[robert@kiddo courses]$ ls -l --color backup.sh
393-rwxr-xr-x 1 robert robert 82 17 sept. 22:06 |\textcolor{green}{backup.sh}|
394\end{minted}
395\begin{quoting}
396 \textbf{Commentaire}:
397 \begin{enumerate}
398 \item La commande \verb|chmod| a été entrée à la ligne 1.
399 \item À la ligne 2, nous avons lancé la commande
400 \mintinline{text}|ls -l --color| sur le fichier \verb|backup.sh|:
401 les droits listés à la ligne 3 montrent bien que la valeur
402 \verb|x| a été ajoutée aux trois endroits possibles. On voit enfin
403 que l'option \verb|--color| affiche en vert les fichiers qui sont
404 exécutables.
405 \end{enumerate}
406\end{quoting}
407
408Nous pouvons désormais exécuter notre script:
409\begin{minted}[linenos,escapeinside=||]{text}
410[robert@kiddo courses]$ ls -l --color
411total 36
412-rwxr-xr-x 1 robert robert 82 17 sept. 22:06 |\textcolor{green}{backup.sh}|
413-rw-r--r-- 1 robert robert 165 16 sept. 19:40 bibliography.bib
414drwxr-xr-x 5 robert robert 4096 17 sept. 22:30 |\textcolor{blue}{fichiers}|
415-rw-r--r-- 1 robert robert 680 16 sept. 18:34 makefile
416-rw-r--r-- 1 robert robert 898 16 sept. 19:39 _preamble_bbl.tex
417-rw-r--r-- 1 robert robert 699 14 sept. 15:02 _preamble-ed.tex
418-rw-r--r-- 1 robert robert 719 16 sept. 19:39 _preamble.tex
419-rw-r--r-- 1 robert robert 1407 17 sept. 00:15 README.md
420-rw-r--r-- 1 robert robert 1804 17 sept. 00:15 README.tex
421[robert@kiddo courses]$ ./backup.sh
422 adding: sauvegarde/ (stored 0%)
423 adding: sauvegarde/README.tex (deflated 57%)
424 adding: sauvegarde/_preamble.tex (deflated 45%)
425 adding: sauvegarde/_preamble_bbl.tex (deflated 57%)
426 adding: sauvegarde/_preamble-ed.tex (deflated 44%)
427[robert@kiddo courses]$ ls -l --color
428total 44
429-rwxr-xr-x 1 robert robert 82 17 sept. 22:06 |\textcolor{green}{backup.sh}|
430-rw-r--r-- 1 robert robert 165 16 sept. 19:40 bibliography.bib
431drwxr-xr-x 5 robert robert 4096 17 sept. 22:31 |\textcolor{blue}{fichiers}|
432-rw-r--r-- 1 robert robert 680 16 sept. 18:34 makefile
433-rw-r--r-- 1 robert robert 898 16 sept. 19:39 _preamble_bbl.tex
434-rw-r--r-- 1 robert robert 699 14 sept. 15:02 _preamble-ed.tex
435-rw-r--r-- 1 robert robert 719 16 sept. 19:39 _preamble.tex
436-rw-r--r-- 1 robert robert 1407 17 sept. 00:15 README.md
437-rw-r--r-- 1 robert robert 1804 17 sept. 00:15 README.tex
438drwxr-xr-x 2 robert robert 4096 17 sept. 22:31 |\textcolor{blue}{sauvegarde}|
439-rw-r--r-- 1 robert robert 2828 17 sept. 22:31 sauvegarde.zip
440[robert@kiddo courses]$ ls sauvegarde
441_preamble_bbl.tex _preamble-ed.tex _preamble.tex README.tex
442\end{minted}
443\begin{quoting}
444 \textbf{Commentaire:}
445 \begin{itemize}
446 \item lignes 1--11: la commande \verb|ls -l --color| donne l'état du
447 dossier \emph{avant} l'exécution du script \verb|backup.sh|;
448 \item lignes 12--17: exécution du script et messages du terminal;
449 \item lignes 18--30: la commande \verb|ls -l --color| donne l'état du
450 dossier \emph{après} l'exécution du script \verb|backup.sh|. On
451 voit qu'un nouveau répertoire \verb|sauvegarde| a été créé, de
452 même qu'un fichier archive \verb|sauvegarde.zip|;
453 \item lignes 31--32: la commande \verb|ls sauvegarde| liste le
454 contenu de ce répertoire. On y trouve tous les fichiers
455 \verb|.tex| qui y ont été copiés par le script.
456 \end{itemize}
457\end{quoting}
458
459\paragraph{PATH} Un dernier point reste à éclaircir: à la ligne 12,
460pourquoi a-t-on écrit \mintinline{bash}|./backup.sh| et non pas
461simplement \mintinline{bash}|backup.sh|? Tout simplement pour des
462raisons de sécurité. En effet, le principe est que les fichiers
463exécutables se trouvent dans certains répertoires-système spécialement
464conçus pour les accueillir. C'est pour cette raison que l'on peut
465lancer les commandes \verb|bash| sans avoir à les préfixer. Or notre
466répertoire de travail ne fait partie de ces répertoires spéciaux. Il
467faut donc préfixer tout script exécutable qui s'y trouve par son
468\emph{chemin d'accès}, soit relatif, soit absolu. On a choisi ici la
469première méthode: dans la séquence \mintinline{text}|./|, le point
470représente le répertoire courant tandis que le \emph{slash} précise
471qu'il s'agit d'un chemin d'accès. Sans le \emph{slash}, le
472\emph{shell} aurait compris le point comme un préfixe de fichier
473caché.
474
346\hfill\verb|../..| à suivre 475\hfill\verb|../..| à suivre
347 476
348\end{document} 477\end{document}