diff options
author | Robert Alessi <alessi@robertalessi.net> | 2018-09-17 23:22:58 +0200 |
---|---|---|
committer | Robert Alessi <alessi@robertalessi.net> | 2018-09-17 23:22:58 +0200 |
commit | 72028c612738d067ba040c2a6251a296ed7e559c (patch) | |
tree | 2674664e32b38f37a4ef11f2f84ee19046e69d8d /fichiers | |
parent | 37685da1392145fc4c210a6129de82eb7e06ea69 (diff) | |
download | courses-72028c612738d067ba040c2a6251a296ed7e559c.tar.gz |
still writing 03-grep-bash.tex
Diffstat (limited to 'fichiers')
-rw-r--r-- | fichiers/03-grep-bash.tex | 129 |
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} | ||
348 | Il faut ici approfondir la notion de \emph{permissions} sur les | ||
349 | fichiers 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 | ||
352 | sur les fichiers: en lecture, en écriture et en exécution. Revenons | ||
353 | sur 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} | ||
358 | Soit: | ||
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} | ||
366 | La commande qui permet de changer les droits s'appelle | ||
367 | \verb|chmod|. Pour comprendre comment l'utiliser, il faut savoir que | ||
368 | les 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} | ||
374 | Ces valeurs peuvent être additionnées. On analyse donc ainsi les | ||
375 | permissions 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} | ||
381 | Soit $644$. Pour ajouter à l'utilisateur \verb|robert| seulement la | ||
382 | permission en exécution, il faudrait donc porter cette valeur à | ||
383 | $744$. Nous allons ici donner ce droit à la fois à \verb|robert|, au | ||
384 | groupe \verb|robert| et au reste du monde, soit une valeur de | ||
385 | $755$. La syntaxe est la suivante: | ||
386 | \begin{minted}{text} | ||
387 | chmod xyz <fichier> | ||
388 | \end{minted} | ||
389 | où \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 | |||
408 | Nous pouvons désormais exécuter notre script: | ||
409 | \begin{minted}[linenos,escapeinside=||]{text} | ||
410 | [robert@kiddo courses]$ ls -l --color | ||
411 | total 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 | ||
414 | drwxr-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 | ||
428 | total 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 | ||
431 | drwxr-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 | ||
438 | drwxr-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, | ||
460 | pourquoi a-t-on écrit \mintinline{bash}|./backup.sh| et non pas | ||
461 | simplement \mintinline{bash}|backup.sh|? Tout simplement pour des | ||
462 | raisons de sécurité. En effet, le principe est que les fichiers | ||
463 | exécutables se trouvent dans certains répertoires-système spécialement | ||
464 | conçus pour les accueillir. C'est pour cette raison que l'on peut | ||
465 | lancer les commandes \verb|bash| sans avoir à les préfixer. Or notre | ||
466 | répertoire de travail ne fait partie de ces répertoires spéciaux. Il | ||
467 | faut 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 | ||
469 | première méthode: dans la séquence \mintinline{text}|./|, le point | ||
470 | représente le répertoire courant tandis que le \emph{slash} précise | ||
471 | qu'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 | ||
473 | caché. | ||
474 | |||
346 | \hfill\verb|../..| à suivre | 475 | \hfill\verb|../..| à suivre |
347 | 476 | ||
348 | \end{document} | 477 | \end{document} |