2009-09-20 12:34:28 +02:00
|
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
<!DOCTYPE html
|
|
|
|
|
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
|
|
|
|
|
"tuteurs://DTD/tml.dtd">
|
|
|
|
|
<html>
|
|
|
|
|
<head>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<title>Répertoires</title>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<h1>Corrigé des exercices sur les répertoires
|
2002-12-09 04:39:15 +01:00
|
|
|
|
(<code>mkdir</code>, <code>rmdir</code>, <code>cd</code>)</h1>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Ces exercices sont des questions de cours : les solutions se trouvent
|
2002-12-09 04:39:15 +01:00
|
|
|
|
toutes dans les pages de man des commandes en question. On suppose donc
|
2009-09-20 12:27:14 +02:00
|
|
|
|
connues les commandes de <code>less</code>, qui servent à se déplacer dans
|
|
|
|
|
les pages de man... et la commande servant à chercher un mot. Testez les
|
|
|
|
|
commandes sur des fichiers et répertoires d'essai pour vous faire la main et
|
2002-12-09 04:39:15 +01:00
|
|
|
|
comprendre ce qui se passe.</p>
|
|
|
|
|
|
|
|
|
|
<h2><a name="mkdir"><code>mkdir, rmdir</code></a></h2>
|
|
|
|
|
|
|
|
|
|
<ol>
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><a name="mk1"> <strong>Créez trois répertoires en une seule ligne de
|
2002-12-09 04:39:15 +01:00
|
|
|
|
commande</strong></a>.
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Si vous voulez créer trois répertoires <code>bla</code>, <code>ble</code> et
|
2002-12-09 04:39:15 +01:00
|
|
|
|
<code>bli</code>, tapez
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
mkdir bla ble bli
|
|
|
|
|
</pre></li>
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><a name="mk2"> <strong>Effacez ces trois répertoires en une seule ligne
|
2002-12-09 04:39:15 +01:00
|
|
|
|
de commande</strong> </a>.
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Il faut taper
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
rmdir bla ble bli
|
|
|
|
|
</pre></li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li><a name="mk3"> <strong>Que se passe-t-il si vous tapez <code>mkdir
|
2009-09-20 12:27:14 +02:00
|
|
|
|
mkdir</code> ?</strong> </a>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<p>Vous créez chez vous un répertoire appelé <code>mkdir</code>.</p>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</li>
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><a name="mk4"> <strong>Vous voulez détruire un répertoire
|
|
|
|
|
<code>bla/</code>... mais ça ne marche pas.</strong> </a>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<code>ls</code> vous dit qu'il est vide, et pourtant vous ne réussissez pas à
|
|
|
|
|
l'effacer : c'est qu'il n'est pas vide. Il doit y avoir des fichiers
|
|
|
|
|
cachés, commençant par un point, que vous ne voyez pas avec <code>ls</code>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
sans option. Il faut taper
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
ls -a
|
|
|
|
|
</pre>
|
|
|
|
|
<p class="continue">
|
2009-09-20 12:27:14 +02:00
|
|
|
|
et effacer les fichiers trouvés.
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p></li>
|
|
|
|
|
|
|
|
|
|
<li><a name="mk5"> <strong>Est-ce que <code>mkdir</code> peut prendre des
|
|
|
|
|
options ?</strong> </a>
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Oui, une : l'option <code>-p</code>, dont on va parler tout de suite.
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p></li>
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><a name="mk6"> <strong>À quelle condition est-ce que la ligne de commande
|
|
|
|
|
«<code>mkdir Rapport/annexes</code>» peut fonctionner et créer effectivement
|
|
|
|
|
ce sous-répertoire ? </strong> </a>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Il faut que le répertoire <code>Rapport</code> existe, pour que l'on puisse y
|
|
|
|
|
créer un sous-répertoire.
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p></li>
|
|
|
|
|
|
|
|
|
|
<li><a name="mk7"> <strong>Y a-t-il une option de <code>mkdir</code> qui
|
2009-09-20 12:27:14 +02:00
|
|
|
|
permette de créer à la fois un répertoire et un sous-répertoire de ce
|
|
|
|
|
répertoire ?</strong> </a>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Oui, c'est l'option <code>-p</code>. Quand vous tapez
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>mkdir -p Rapport/annexes
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p class="continue">
|
2009-09-20 12:27:14 +02:00
|
|
|
|
un répertoire <code>Rapport</code> est créé, et dans ce répertoire un
|
|
|
|
|
sous-répertoire <code>annexes</code>.
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p></li>
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><a name="mk8"> <strong> Comment créer un répertoire en spécifiant des
|
|
|
|
|
droits ? </strong> </a>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
On utilise l'option <code>-m</code> (<em>mode</em>) de <code>mkdir</code>.
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Par exemple :
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<span class="bireme ~ $">bireme ~ $</span> mkdir -m 700 Mail
|
|
|
|
|
<span class="bireme ~ $">bireme ~ $</span> ls -ld Mail
|
2002-12-09 04:39:15 +01:00
|
|
|
|
drwx------ 2 robin litt95 2048 Jun 2 15:27 Mail/
|
|
|
|
|
</pre></li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li><a name="mk9"> <strong> Quel est l'effet de la commande
|
2009-09-20 12:27:14 +02:00
|
|
|
|
suivante :</strong></a>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
<pre> rmdir -p toto/tata/tutu/</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Cette commande efface toute la hiérarchie des répertoires, à condition qu'ils
|
2002-12-09 04:39:15 +01:00
|
|
|
|
soient vides; si par exemple <code>tutu/</code> est vide mais
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<code>toto/</code> ne l'est pas, <code>tutu/</code> sera effacé mais pas
|
|
|
|
|
<code>toto/</code>, et le programme s'arrête.
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p></li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><a name="mk10"> <strong>Création récursive sans message d'erreur
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</strong> </a>
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
On achève avec ceci le tour de l'option <code>-p</code>... Si donc on tape
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
mkdir -p toto/tutu/
|
|
|
|
|
</pre>
|
|
|
|
|
<p class="continue">
|
2009-09-20 12:27:14 +02:00
|
|
|
|
le sous-répertoire <code>tutu/</code> est créé si <code>toto/</code> existe
|
|
|
|
|
déjà; et si <code>toto/</code> n'existe pas, ce répertoire et son
|
|
|
|
|
sous-répertoire sont créés. Il n'y a pas de message d'erreur.
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p></li>
|
|
|
|
|
|
|
|
|
|
</ol>
|
|
|
|
|
|
|
|
|
|
<h2><a name="cd"><code>cd</code></a></h2>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
But de l'exercice : apprendre à se servir de <code>.</code> et
|
|
|
|
|
<code>..</code> («point» et «point point»). <code>..</code> désigne le
|
|
|
|
|
répertoire père du répertoire courant, et <code>.</code> désigne le répertoire
|
2002-12-09 04:39:15 +01:00
|
|
|
|
courant. <code>..</code> sert beaucoup avec <code>cd</code>, pour remonter
|
2009-09-20 12:27:14 +02:00
|
|
|
|
d'un niveau dans une arborescence; <code>.</code> est très utile avec des
|
|
|
|
|
commandes comme <code>mv</code> ou <code>cp</code>, où il signifie en fait
|
|
|
|
|
«ici».
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p class="centre">
|
|
|
|
|
<a name="arbo">
|
2003-09-20 13:11:58 +02:00
|
|
|
|
<img src="../exocd.png" alt="[Exemple d'arborescence]" />
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</a>
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<ol>
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><a name="cd1"> <strong>Dans quel répertoire vous trouvez-vous quand vous
|
|
|
|
|
vous loguez ?</strong> </a>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Vous vous trouvez dans votre répertoire personnel, dans <code>~</code> (tilde).
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p></li>
|
|
|
|
|
|
|
|
|
|
<li><a name="cd2"> <strong>Allez directement dans
|
|
|
|
|
<code>~/Rapport/docs/afaire/</code></strong> </a>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Taper
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
cd Rapport/docs/afaire
|
|
|
|
|
</pre></li>
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><a name="cd3"> <strong>De là, passez dans
|
2002-12-09 04:39:15 +01:00
|
|
|
|
<code>~/Rapport/docs/fait/</code></strong> </a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
cd ../fait
|
|
|
|
|
</pre></li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li><a name="cd4"> <strong>Revenez dans <code>~/Rapport/</code></strong>
|
|
|
|
|
</a>
|
|
|
|
|
<p>
|
|
|
|
|
Taper
|
|
|
|
|
</p>
|
|
|
|
|
<pre>
|
|
|
|
|
cd ../..
|
|
|
|
|
</pre>
|
|
|
|
|
<p class="continue">
|
|
|
|
|
ou
|
|
|
|
|
</p>
|
|
|
|
|
<pre>
|
|
|
|
|
cd ~/Rapport
|
|
|
|
|
</pre></li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><a name="cd5"> <strong>Sans changer de répertoire, regardez avec
|
2002-12-09 04:39:15 +01:00
|
|
|
|
<code>less</code> le contenu de <code>~/www/index.html</code></strong>
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Il faut taper
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
less ~/www/index.html
|
|
|
|
|
</pre>
|
|
|
|
|
<p class="continue">
|
|
|
|
|
ou
|
|
|
|
|
</p>
|
|
|
|
|
<pre>
|
|
|
|
|
less ../www/index.html
|
|
|
|
|
</pre>
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li><a name="cd6"> <strong>Passez dans <code>~/Rapport/docs/</code></strong>
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
cd docs/
|
|
|
|
|
</pre>
|
|
|
|
|
</li>
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><a name="cd7"> <strong>En restant là où vous êtes, affichez les droits de
|
2002-12-09 04:39:15 +01:00
|
|
|
|
<code>~/Mail/</code></strong> </a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Il y a un petit piège dans cette question. En effet, si vous tapez</p>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
<pre>
|
|
|
|
|
ls -l Mail/
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
vous allez obtenir le contenu du répertoire <code>Mail/</code>, mais pas le
|
|
|
|
|
statut du répertoire lui-même. Il faut donc utiliser l'option <code>-d</code>
|
|
|
|
|
de <code>ls</code> :
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<span class="prompt">bireme ~ $</span> ls -ld Mail
|
2002-12-09 04:39:15 +01:00
|
|
|
|
drwx------ 2 toto litt98 512 Apr 2 19:02 /users/98/litt/toto/Mail/
|
|
|
|
|
</pre>
|
|
|
|
|
</li>
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><a name="cd8"> <strong>Revenez dans votre répertoire principal</strong>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Taper <code>cd</code>, sans arguments.
|
|
|
|
|
</p>
|
|
|
|
|
</li>
|
|
|
|
|
|
2009-09-20 12:27:14 +02:00
|
|
|
|
<li><a name="cd9"> <strong>Que se passe-t-il si vous vous déloguez alors que
|
|
|
|
|
vous n'êtes pas dans votre répertoire principal ?</strong> </a>
|
2002-12-09 04:39:15 +01:00
|
|
|
|
|
|
|
|
|
<p>
|
2009-09-20 12:27:14 +02:00
|
|
|
|
Strictement rien ! Ça n'a aucune importance.
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</p></li>
|
|
|
|
|
|
|
|
|
|
</ol>
|
|
|
|
|
|
|
|
|
|
<div class="metainformation">
|
2009-09-27 22:00:55 +02:00
|
|
|
|
Auteur : Émilia Robin, Joël Riou.
|
|
|
|
|
<date value="from git" />
|
2002-12-09 04:39:15 +01:00
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|
|
|
|
|
|
|
|
|
|
|