tuteurs.ens.fr/unix/exercices/solutions/mkdir_cd-sol.tml

290 lines
6.7 KiB
Text
Raw Normal View History

<?xml version="1.0" encoding="UTF-8"?>
<!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">
2003-09-20 13:11:58 +02:00
<img src="../exocd.png" 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.
<date value="from git" />
</div>
</body>
</html>