288 lines
6.6 KiB
XML
288 lines
6.6 KiB
XML
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||
<!DOCTYPE html
|
||
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
|
||
"tuteurs://DTD/tml.dtd">
|
||
<html>
|
||
<head>
|
||
<title>Répertoires</title>
|
||
</head>
|
||
<body>
|
||
|
||
<h1>Corrigé des exercices sur les répertoires
|
||
(<code>mkdir</code>, <code>rmdir</code>, <code>cd</code>)</h1>
|
||
|
||
<p>
|
||
Ces exercices sont des questions de cours : les solutions se trouvent
|
||
toutes dans les pages de man des commandes en question. On suppose donc
|
||
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
|
||
comprendre ce qui se passe.</p>
|
||
|
||
<h2><a name="mkdir"><code>mkdir, rmdir</code></a></h2>
|
||
|
||
<ol>
|
||
|
||
<li><a name="mk1"> <strong>Créez trois répertoires en une seule ligne de
|
||
commande</strong></a>.
|
||
|
||
<p>
|
||
Si vous voulez créer trois répertoires <code>bla</code>, <code>ble</code> et
|
||
<code>bli</code>, tapez
|
||
</p>
|
||
|
||
<pre>
|
||
mkdir bla ble bli
|
||
</pre></li>
|
||
|
||
<li><a name="mk2"> <strong>Effacez ces trois répertoires en une seule ligne
|
||
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
|
||
mkdir</code> ?</strong> </a>
|
||
|
||
<p>Vous créez chez vous un répertoire appelé <code>mkdir</code>.</p>
|
||
</li>
|
||
|
||
<li><a name="mk4"> <strong>Vous voulez détruire un répertoire
|
||
<code>bla/</code>... mais ça ne marche pas.</strong> </a>
|
||
|
||
<p>
|
||
<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>
|
||
sans option. Il faut taper
|
||
</p>
|
||
|
||
<pre>
|
||
ls -a
|
||
</pre>
|
||
<p class="continue">
|
||
et effacer les fichiers trouvés.
|
||
</p></li>
|
||
|
||
<li><a name="mk5"> <strong>Est-ce que <code>mkdir</code> peut prendre des
|
||
options ?</strong> </a>
|
||
<p>
|
||
Oui, une : l'option <code>-p</code>, dont on va parler tout de suite.
|
||
</p></li>
|
||
|
||
<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>
|
||
|
||
<p>
|
||
Il faut que le répertoire <code>Rapport</code> existe, pour que l'on puisse y
|
||
créer un sous-répertoire.
|
||
</p></li>
|
||
|
||
<li><a name="mk7"> <strong>Y a-t-il une option de <code>mkdir</code> qui
|
||
permette de créer à la fois un répertoire et un sous-répertoire de ce
|
||
répertoire ?</strong> </a>
|
||
|
||
<p>
|
||
Oui, c'est l'option <code>-p</code>. Quand vous tapez
|
||
</p>
|
||
|
||
<pre>mkdir -p Rapport/annexes
|
||
</pre>
|
||
|
||
<p class="continue">
|
||
un répertoire <code>Rapport</code> est créé, et dans ce répertoire un
|
||
sous-répertoire <code>annexes</code>.
|
||
</p></li>
|
||
|
||
<li><a name="mk8"> <strong> Comment créer un répertoire en spécifiant des
|
||
droits ? </strong> </a>
|
||
|
||
<p>
|
||
On utilise l'option <code>-m</code> (<em>mode</em>) de <code>mkdir</code>.
|
||
Par exemple :
|
||
</p>
|
||
|
||
<pre>
|
||
<span class="bireme ~ $">bireme ~ $</span> mkdir -m 700 Mail
|
||
<span class="bireme ~ $">bireme ~ $</span> ls -ld Mail
|
||
drwx------ 2 robin litt95 2048 Jun 2 15:27 Mail/
|
||
</pre></li>
|
||
|
||
|
||
<li><a name="mk9"> <strong> Quel est l'effet de la commande
|
||
suivante :</strong></a>
|
||
<pre> rmdir -p toto/tata/tutu/</pre>
|
||
|
||
<p>
|
||
Cette commande efface toute la hiérarchie des répertoires, à condition qu'ils
|
||
soient vides; si par exemple <code>tutu/</code> est vide mais
|
||
<code>toto/</code> ne l'est pas, <code>tutu/</code> sera effacé mais pas
|
||
<code>toto/</code>, et le programme s'arrête.
|
||
</p></li>
|
||
|
||
|
||
|
||
<li><a name="mk10"> <strong>Création récursive sans message d'erreur
|
||
</strong> </a>
|
||
<p>
|
||
On achève avec ceci le tour de l'option <code>-p</code>... Si donc on tape
|
||
</p>
|
||
|
||
<pre>
|
||
mkdir -p toto/tutu/
|
||
</pre>
|
||
<p class="continue">
|
||
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.
|
||
</p></li>
|
||
|
||
</ol>
|
||
|
||
<h2><a name="cd"><code>cd</code></a></h2>
|
||
|
||
<p>
|
||
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
|
||
courant. <code>..</code> sert beaucoup avec <code>cd</code>, pour remonter
|
||
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».
|
||
</p>
|
||
|
||
<p class="centre">
|
||
<a name="arbo">
|
||
<img src="exocd.gif" alt="[Exemple d'arborescence]" />
|
||
</a>
|
||
</p>
|
||
|
||
<ol>
|
||
|
||
<li><a name="cd1"> <strong>Dans quel répertoire vous trouvez-vous quand vous
|
||
vous loguez ?</strong> </a>
|
||
|
||
<p>
|
||
Vous vous trouvez dans votre répertoire personnel, dans <code>~</code> (tilde).
|
||
</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>
|
||
|
||
<li><a name="cd3"> <strong>De là, passez dans
|
||
<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>
|
||
|
||
|
||
|
||
<li><a name="cd5"> <strong>Sans changer de répertoire, regardez avec
|
||
<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>
|
||
|
||
<li><a name="cd7"> <strong>En restant là où vous êtes, affichez les droits de
|
||
<code>~/Mail/</code></strong> </a>
|
||
|
||
|
||
<p>
|
||
Il y a un petit piège dans cette question. En effet, si vous tapez</p>
|
||
<pre>
|
||
ls -l Mail/
|
||
</pre>
|
||
|
||
<p>
|
||
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> :
|
||
</p>
|
||
|
||
<pre>
|
||
<span class="prompt">bireme ~ $</span> ls -ld Mail
|
||
drwx------ 2 toto litt98 512 Apr 2 19:02 /users/98/litt/toto/Mail/
|
||
</pre>
|
||
</li>
|
||
|
||
<li><a name="cd8"> <strong>Revenez dans votre répertoire principal</strong>
|
||
</a>
|
||
|
||
<p>
|
||
Taper <code>cd</code>, sans arguments.
|
||
</p>
|
||
</li>
|
||
|
||
<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>
|
||
|
||
<p>
|
||
Strictement rien ! Ça n'a aucune importance.
|
||
</p></li>
|
||
|
||
</ol>
|
||
|
||
<div class="metainformation">
|
||
Auteur : Émilia Robin, Joël Riou. Dernière modification le 2002-12-08.
|
||
</div>
|
||
|
||
</body>
|
||
</html>
|
||
|
||
|