388 lines
10 KiB
Text
388 lines
10 KiB
Text
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|||
|
<!DOCTYPE html
|
|||
|
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
|
|||
|
"tuteurs://DTD/tml.dtd">
|
|||
|
<html>
|
|||
|
<head>
|
|||
|
<title>Commandes Unix</title>
|
|||
|
</head>
|
|||
|
<body>
|
|||
|
|
|||
|
<h1>Corrig<69>s des exercices sur les commandes Unix
|
|||
|
<EFBFBD>l<EFBFBD>mentaires</h1>
|
|||
|
|
|||
|
|
|||
|
<p>&icone.note; Les paragraphes signal<61>s par cette ic<69>ne sont des
|
|||
|
explications plus techniques pour donner une r<>ponse exacte <20> certaines
|
|||
|
questions. Si vous <20>tes d<>butant, ce n'est pas n<>cessaire de les lire
|
|||
|
maintenant.</p>
|
|||
|
|
|||
|
<h2><a name="debut1">Exercice 1 (<code>joe</code>, <code>less</code>,
|
|||
|
<code>ls</code>)</a></h2>
|
|||
|
|
|||
|
|
|||
|
<ol>
|
|||
|
|
|||
|
<li> <strong>Cr<43>ez un fichier <code>premiertexte</code> contenant une ou
|
|||
|
deux phrases</strong>.
|
|||
|
|
|||
|
<p>
|
|||
|
Pour cr<63>er un fichier et <20>crire du texte dedans, il faut l'<27>diter avec un
|
|||
|
<EFBFBD>diteur de votre choix. Nous proposons <code>nano</code> aux d<>butants. Il
|
|||
|
faut donc taper </p>
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~ $</span><3E>nano premiertexte
|
|||
|
</pre>
|
|||
|
|
|||
|
<p><strong>Utilisation de <code>nano</code></strong><3E>: le prompt
|
|||
|
affichant le nom de la machine dispara<72>t; vous avez <20> la place une page
|
|||
|
blanche o<> vous pouvez taper du texte. Le nom du fichier que vous <20>ditez
|
|||
|
et le nom de l'<27>diteur sont affich<63>s en haut.
|
|||
|
La liste des commandes disponibles est <20>crite en bas. Vous pouvez faire
|
|||
|
<code>Ctrl-O</code> pour enregistrer et <code>Ctrl-X</code> pour
|
|||
|
quitter.</p>
|
|||
|
|
|||
|
<p>
|
|||
|
Vous pouvez maintenant taper ce que vous voulez et quitter en
|
|||
|
enregistrant (<code>Ctrl-X</code> puis r<>pondre <code>y</code> au moment
|
|||
|
o<EFBFBD> <code>nano</code> vous demande si vous voulez enregistrer le texte).
|
|||
|
</p></li>
|
|||
|
|
|||
|
<li> <strong>Visualisez le contenu de <code>premiertexte</code> sans
|
|||
|
l'<27>diter</strong>
|
|||
|
|
|||
|
|
|||
|
<p>C'est la commande <code>less</code> qui permet de faire cela (ou
|
|||
|
<code>more</code>, si <code>less</code> n'est pas install<6C>e l<> o<> vous vous
|
|||
|
trouvez). Pour lire le contenu de <code>premiertexte</code>, il faut taper
|
|||
|
</p>
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~ $</span><3E>less premiertexte
|
|||
|
</pre>
|
|||
|
|
|||
|
<p>
|
|||
|
Pour quitter <code>less</code> ou <code>more</code>, taper <code>q</code>.
|
|||
|
</p></li>
|
|||
|
|
|||
|
<li> <strong>Quelle est la taille de
|
|||
|
<code>premiertexte</code><3E>?</strong>
|
|||
|
|
|||
|
<p>
|
|||
|
C'est l'option <code>-l</code> de <code>ls</code> qui permet de savoir la
|
|||
|
taille d'un fichier, sa date de derni<6E>re modification, etc. Vous tapez
|
|||
|
donc<EFBFBD>: </p>
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~ $</span><3E>ls -l
|
|||
|
</pre>
|
|||
|
|
|||
|
<p>
|
|||
|
Cette commande sans arguments vous donne la liste de tous vos fichiers. Si
|
|||
|
vous voulez conna<6E>tre les caract<63>ristiques de <code>premiertexte</code> et rien
|
|||
|
d'autre, tapez
|
|||
|
</p>
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~ $</span><3E>ls -l premiertexte
|
|||
|
</pre>
|
|||
|
|
|||
|
<p>
|
|||
|
La config conscrits propose l'alias <code>ll</code> pour
|
|||
|
<code>ls<6C>-l</code>.
|
|||
|
</p></li>
|
|||
|
|
|||
|
<li> <strong><3E>ditez <code>PREMIERTEXTE</code>. Que
|
|||
|
constatez-vous<75>?</strong>
|
|||
|
|
|||
|
<p>
|
|||
|
Pour <20>diter <code>PREMIERTEXTE</code>, vous tapez
|
|||
|
</p>
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~ $</span><3E>joe PREMIERTEXTE
|
|||
|
</pre>
|
|||
|
|
|||
|
<p>
|
|||
|
Vous constatez qu'il s'agit d'un nouveau fichier, et que vous ne retrouvez pas
|
|||
|
le contenu de <code>premiertexte</code>. C'est normal<61>: Unix est <em>case
|
|||
|
sensitive</em>, c'est-<2D>-dire sensible <20> la <em>casse</em> des
|
|||
|
caract<EFBFBD>res<EFBFBD>: majuscules et minuscules ne sont pas interchangeables. C'est
|
|||
|
pourquoi <code>premiertexte</code> et <code>PREMIERTEXTE</code> sont deux
|
|||
|
fichiers diff<66>rents.
|
|||
|
</p>
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
|
|||
|
<h2> <a name="debut2">Exercice 2 (<code>cp</code>, <code>ls</code>,
|
|||
|
<code>mv</code>)</a></h2>
|
|||
|
|
|||
|
|
|||
|
<ol>
|
|||
|
|
|||
|
<li> <strong>Faites une copie de <code>premiertexte</code> appel<65>e
|
|||
|
<code>double</code></strong>
|
|||
|
|
|||
|
<p>
|
|||
|
C'est la commande <code>cp</code> (<em>copy</em>) qui sert <20> faire une copie
|
|||
|
d'un fichier, en indiquant le nom du fichier <20> copier puis nom du nouveau
|
|||
|
fichier. Il faut donc taper<65>: </p>
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~ $</span><3E>cp premiertexte double
|
|||
|
</pre></li>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<li> <strong>Comparez leurs tailles</strong>
|
|||
|
|
|||
|
|
|||
|
<p>
|
|||
|
Comme dans l'exercice 1, c'est l'option <code>-l</code> de <code>ls</code> qui
|
|||
|
va servir. En tapant <code>ls<6C>-l</code> sans argument, vous affichez le
|
|||
|
contenu du r<>pertoire en entier. Si vous voulez limiter l'affichage aux deux
|
|||
|
fichiers souhait<69>s, tapez
|
|||
|
</p>
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~ $</span><3E>ls -l premiertexte double
|
|||
|
</pre></li>
|
|||
|
|
|||
|
|
|||
|
<li> <strong>Renommez <code>double</code> en
|
|||
|
<code>introduction</code></strong>
|
|||
|
|
|||
|
<p>
|
|||
|
C'est la commande <code>mv</code> (<em>move</em>) qui sert <20> renommer un
|
|||
|
fichier. Pour renommer <code>double</code>, il faut donc taper<65>:
|
|||
|
</p>
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~ $</span><3E>mv double introduction
|
|||
|
</pre>
|
|||
|
|
|||
|
|
|||
|
<p>
|
|||
|
En tapant <code>ls</code>, vous pouvez v<>rifier que le fichier
|
|||
|
<code>double</code> a disparu au profit d'un fichier
|
|||
|
<code>introduction</code>.</p>
|
|||
|
</li>
|
|||
|
|
|||
|
<li> <strong>Quelle diff<66>rence y a-t-il entre
|
|||
|
<code>mv<6D>double<6C>introduction</code> et
|
|||
|
<code>cp<63>double<6C>introduction</code><3E>?</strong>
|
|||
|
|
|||
|
<p>
|
|||
|
<code>mv</code> (<em>move</em>) renomme un fichier<65>: seul son nom est
|
|||
|
modifi<EFBFBD>, son contenu reste inchang<6E> et aucun autre fichier n'est cr<63><72>.
|
|||
|
<code>double</code> dispara<72>t au profit de <code>introduction</code>.
|
|||
|
</p>
|
|||
|
|
|||
|
<p>
|
|||
|
<code>cp</code> (<em>copy</em>) fait une copie du premier fichier<65>: un
|
|||
|
nouveau fichier est cr<63><72>, son contenu est identique <20> celui du fichier
|
|||
|
d'origine, mais leurs noms sont diff<66>rents. <code>double</code> et
|
|||
|
<code>introduction</code> existent de fa<66>on parall<6C>le.
|
|||
|
</p>
|
|||
|
</li>
|
|||
|
|
|||
|
</ol>
|
|||
|
|
|||
|
<h2> <a name="debut3">Exercice 3 (<code>mkdir</code>,
|
|||
|
<code>mv</code>, <code>cp</code>, <code>ls</code>,
|
|||
|
<code>cd</code>)</a></h2>
|
|||
|
|
|||
|
<ol>
|
|||
|
|
|||
|
<li> <strong>Cr<43>ez un r<>pertoire <code>essai/</code></strong>
|
|||
|
|
|||
|
<p>
|
|||
|
Il faut taper
|
|||
|
</p>
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~ $</span><3E>mkdir essai
|
|||
|
</pre>
|
|||
|
<p class="continue">(<em>make directory <20>essai<61></em>) </p>
|
|||
|
|
|||
|
<p>
|
|||
|
Vous pouvez v<>rifier en tapant <code>ls</code> que le r<>pertoire a bien <20>t<EFBFBD>
|
|||
|
cr<EFBFBD><EFBFBD>.
|
|||
|
</p></li>
|
|||
|
|
|||
|
|
|||
|
<li> <strong>D<>placez <code>double</code> dans <code>essai/</code></strong>
|
|||
|
|
|||
|
|
|||
|
<p>C'est <code>mv</code> (<em>move</em>) qui sert <20> d<>placer des fichiers, ainsi
|
|||
|
qu'<27> les renommer<65>: </p>
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~ $</span><3E>mv double essai/
|
|||
|
</pre>
|
|||
|
|
|||
|
<p>
|
|||
|
Le slash (<code>/</code>) n'est pas obligatoire, c'est en fait un agr<67>ment
|
|||
|
pour identifier plus vite les r<>pertoires dans une liste de fichiers
|
|||
|
</p>
|
|||
|
|
|||
|
<p>&icone.note; C'est l'option <code>-F</code> de <code>ls</code> qui
|
|||
|
fait appara<72>tre ce symbole; vous avez en fait un alias de <code>ls</code>
|
|||
|
sur <code>ls -F</code>). </p></li>
|
|||
|
|
|||
|
<li> <strong>Faites une copie de <code>premiertexte</code> appel<65>e
|
|||
|
<code>copie</code>, et placez-la <20>galement dans
|
|||
|
<code>essai/</code>.</strong>
|
|||
|
|
|||
|
<p>
|
|||
|
On peut faire <20>a de plusieurs fa<66>ons<6E>:
|
|||
|
</p>
|
|||
|
|
|||
|
<ul>
|
|||
|
|
|||
|
<li> Faire la copie dans le r<>pertoire courant, puis d<>placer cette copie dans
|
|||
|
le sous-r<>pertoire <code>essai/</code><3E>:
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~ $</span><3E>cp premiertexte copie
|
|||
|
<span class="prompt">bireme ~ $</span><3E>mv copie essai/
|
|||
|
</pre></li>
|
|||
|
|
|||
|
<li> Faire directement la copie dans le sous-r<>pertoire
|
|||
|
<code>essai/</code><3E>:
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~ $</span><3E>cp premier texte essai/copie
|
|||
|
</pre></li>
|
|||
|
|
|||
|
<li> N'oublions pas le cas o<> nous ne serions pas dans le r<>pertoire
|
|||
|
d'accueil, mais dans <code>essai/</code>. On pourrait d'abord faire la copie
|
|||
|
dans le r<>pertoire p<>re, puis amener cette copie l<> o<> on se trouve<76>:
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~/essai $</span><3E>cp ../premier texte ../copie
|
|||
|
<span class="prompt">bireme ~/essai $</span><3E>mv ../copie .
|
|||
|
</pre>
|
|||
|
|
|||
|
<p class="continue">Ou plus simplement, on pourrait copier le fichier du r<>pertoire p<>re
|
|||
|
directement dans le r<>pertoire courant<6E>:</p>
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~/essai $</span><3E>cp ../premiertexte copie
|
|||
|
</pre></li>
|
|||
|
</ul></li>
|
|||
|
|
|||
|
|
|||
|
<li> <strong>Affichez une liste de ce que contient
|
|||
|
<code>essai/</code></strong>
|
|||
|
|
|||
|
<p>
|
|||
|
Si l'on est dans le r<>pertoire personnel, on tape<70>:
|
|||
|
</p>
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~ $</span><3E>ls essai
|
|||
|
</pre>
|
|||
|
|
|||
|
<p class="continue">
|
|||
|
pour avoir une liste de ce que contient <code>essai</code>. Le r<>sultat
|
|||
|
ressemblera <20> <20>a<EFBFBD>:</p>
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~ $</span><3E>ls essai
|
|||
|
copie double
|
|||
|
</pre>
|
|||
|
|
|||
|
<p class="continue">
|
|||
|
Et si vous vous trouvez alors dans <code>essai/</code>, le r<>sultat sera le
|
|||
|
suivant<EFBFBD>:</p>
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~/essai $</span><3E>ls
|
|||
|
copie double
|
|||
|
</pre></li>
|
|||
|
</ol>
|
|||
|
|
|||
|
<h2><a name="debut4">Exercice 4 (<code>rmdir</code>, <code>cd</code>,
|
|||
|
<code>rm</code>)</a></h2>
|
|||
|
|
|||
|
<ol>
|
|||
|
|
|||
|
<li> <strong>Essayez de dr<64>tuire <code>essai/</code>. Que se
|
|||
|
passe-t-il<69>? Que faut-il faire pour d<>truire un
|
|||
|
r<EFBFBD>pertoire<EFBFBD>?</strong>
|
|||
|
|
|||
|
<p> C'est la commande <code>rmdir</code> (<em>remove directory</em>) qui
|
|||
|
sert <20> d<>truire les r<>pertoires. Cependant, on ne peut d<>truire un
|
|||
|
r<EFBFBD>pertoire qu'<27> condition qu'il soit enti<74>rement vide, c'est pourquoi le
|
|||
|
programme vous r<>pond
|
|||
|
</p>
|
|||
|
|
|||
|
<pre>
|
|||
|
rmdir: essai: directory not empty
|
|||
|
</pre>
|
|||
|
|
|||
|
<p class="continue">
|
|||
|
Il faut donc vider le r<>pertoire pour pouvoir le d<>truire.</p></li>
|
|||
|
|
|||
|
<li> <strong>D<>truisez tout ce que contient <code>essai/</code></strong>
|
|||
|
|
|||
|
<p>
|
|||
|
C'est la commande <code>rm</code> qui permet de d<>truire des fichiers. Il faut
|
|||
|
donc taper<65>: </p>
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~/essai $</span><3E>rm double copie
|
|||
|
</pre>
|
|||
|
|
|||
|
|
|||
|
<p>
|
|||
|
Vous pouvez aussi vous servir de certains caract<63>res sp<73>ciaux; ici, c'est
|
|||
|
<code>*</code> (<28>toile) qui est utile. <20><>toile<6C> signifie <20>Tout cha<68>ne de
|
|||
|
caract<EFBFBD>res ne commen<65>ant pas par un point<6E>. Donc, pour effacer d'un seul coup
|
|||
|
tous les fichiers du r<>pertoire, vous pouvez taper<65>:
|
|||
|
</p>
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~/essai $</span><3E>rm *
|
|||
|
</pre>
|
|||
|
|
|||
|
<div class="attention">
|
|||
|
<h1>&icone.attention;<3B>Attention<6F>&icone.attention;</h1>
|
|||
|
<p> Il se trouve que votre configuration est ainsi faite
|
|||
|
que le programme demande confirmation avant d'effacer des fichiers . Cela
|
|||
|
vient de ce qu'il y a un <em>alias</em> de <code>rm</code> sur
|
|||
|
<code>rm<72>-i</code>; l'option <code>-i</code> est l'option <20>interactive<76>,
|
|||
|
qui demande confirmation. </p>
|
|||
|
|
|||
|
<p>
|
|||
|
Soyez donc prudents<74>: on a vite fait de confondre <code>mv</code>
|
|||
|
(<em>move</em>) et <code>rm</code> (<em>remove</em>), et l'option
|
|||
|
<code>-i</code> n'est pas syst<73>matiquement mise.
|
|||
|
</p>
|
|||
|
</div></li>
|
|||
|
|
|||
|
<li> <strong>D<>truisez <code>essai/</code></strong>
|
|||
|
|
|||
|
<p>
|
|||
|
Revenez dans le r<>pertoire p<>re (<code>cd<63>..</code>) et tapez<65>:
|
|||
|
</p>
|
|||
|
|
|||
|
|
|||
|
<pre>
|
|||
|
<span class="prompt">bireme ~ $</span><3E>rmdir essai/
|
|||
|
</pre>
|
|||
|
(<em>remove directory <20>essai<61></em>)
|
|||
|
</li>
|
|||
|
</ol>
|
|||
|
|
|||
|
|
|||
|
<div class="metainformation">
|
|||
|
Auteur<75>: <20>milia Robin, Jo<4A>l Riou. Derni<6E>re modification le 2002-11-04.
|
|||
|
</div>
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|
|||
|
|