26abda08cc
1) insertion de balises <date value="$Date$"/> 2) remplacement des espaces insécables par des 3) insertion d'espaces insécables autour des guillemets français
263 lines
7.3 KiB
XML
263 lines
7.3 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>cp et mv</title>
|
|
</head>
|
|
<body>
|
|
|
|
<h1>Corrigé des exercices sur <code>cp</code> et <code>mv</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="cp"><code>cp</code></a></h2>
|
|
|
|
|
|
|
|
<ol>
|
|
|
|
|
|
<li><a name="cp1"> <strong>Est-il possible de faire une copie d'un répertoire
|
|
et de l'ensemble de ses sous-répertoires en une seule ligne de
|
|
commande ?</strong> </a>
|
|
|
|
<p>
|
|
Oui, c'est à cela que sert l'option <code>-r</code> (<em>recursive</em>).
|
|
Supposons, suivant l'<a href="../mkdir_cd.html#arbo">arborescence d'exemple</a>,
|
|
que vous voulez copier le répertoire <code>Rapport</code> et ses
|
|
sous-répertoires dans le répertoire <code>www</code>. Il faut
|
|
taper :</p>
|
|
|
|
<pre>
|
|
cp -r Rapport/ www/
|
|
</pre>
|
|
<p class="continue">
|
|
ou
|
|
</p>
|
|
|
|
<pre>
|
|
cp -R Rapport/ www/
|
|
</pre></li>
|
|
|
|
<li><a name="cp2"> <strong>Que se passe-t-il si l'on veut faire une copie
|
|
appelée <code>tentative/</code> de son répertoire <code>essai/</code>, et que
|
|
le répertoire <code>tentative/</code> existe déjà ?</strong> </a>
|
|
|
|
<p>Quand on indique le nom d'un répertoire qui n'existe pas, <code>cp</code>
|
|
considère qu'il s'agit du nom à donner à la copie du premier répertoire (ou
|
|
fichier). Quand le répertoire existe déjà, <code>cp</code> considère qu'il
|
|
s'agit de l'endroit où il faut placer la copie du premier élément (la
|
|
«cible» : <em>target</em>).</p>
|
|
|
|
<p>
|
|
Si donc on tape
|
|
</p>
|
|
<pre>
|
|
cp -R essai/ tentative/
|
|
</pre>
|
|
<p class="continue">
|
|
et que <code>tentative/</code> existe déjà, on obtient une copie de
|
|
<code>essai/</code>, également appelée <code>essai/</code>, placée dans le
|
|
répertoire <code>tentative/</code>.
|
|
</p>
|
|
</li>
|
|
|
|
<li><a name="cp3"> <strong>Que se passe-t-il si vous voulez faire une copie
|
|
d'un fichier dans un répertoire où il existe déjà un fichier de ce
|
|
nom ?</strong> </a>
|
|
|
|
<p>
|
|
Le programme demande si vous voulez vraiment effacer le fichier déjà existant
|
|
pour le remplacer par celui dont vous faites la copie.
|
|
</p>
|
|
|
|
<div class="attention">
|
|
<h1>&icone.attention; Attention &icone.attention;</h1>
|
|
<p> Il en est
|
|
ainsi parce que vous avez un alias de <code>cp</code> sur <code>cp -i</code>,
|
|
qui demande confirmation. Ce n'est pas nécessairement le cas partout.
|
|
</p>
|
|
|
|
<p>&icone.note;Pour savoir quels sont vos
|
|
alias, tapez «<code>alias</code>» ou allez voir dans votre fichier
|
|
<code>.alias</code>. Avec la config conscrits, les alias sont dans le
|
|
<code>.zshrc</code> (le fichier de configuration du shell
|
|
<code>zsh</code>).</p>
|
|
</div></li>
|
|
|
|
<li><a name="cp4"> <strong>Quel est l'effet d'une ligne comme :
|
|
</strong></a>
|
|
<pre>
|
|
cp fichier1 fichier2 fichier3 repertoire/
|
|
</pre>
|
|
|
|
<p>
|
|
Les fichiers <code>fichier1</code>, <code>fichier2</code> et
|
|
<code>fichier3</code> sont copiés sous leur nom dans le répertoire
|
|
<code>répertoire/</code>, qui doit exister.
|
|
</p>
|
|
</li>
|
|
|
|
</ol>
|
|
|
|
<h2><a name="mv"><code>mv</code></a></h2>
|
|
|
|
<ol>
|
|
|
|
<li><a name="mv1"> <strong>Que se passe-t-il si le fichier «cible» existe
|
|
déjà ?</strong> </a>
|
|
<p>
|
|
Si vous avez un alias de <code>mv</code> sur <code>mv -i</code> (cas de la
|
|
config conscrits), le programme demande si vous voulez réécrire le fichier
|
|
cible en remplaçant son contenu par celui du fichier de départ :
|
|
</p>
|
|
|
|
|
|
<pre>
|
|
<span class="prompt">bireme ~ $</span> ls
|
|
rapport.tex notes complements
|
|
<span class="prompt">bireme ~ $</span>mv notes complements
|
|
mv: overwrite complements (yes/no)? y
|
|
<span class="prompt">bireme ~ $</span>ls
|
|
rapport.tex complements
|
|
</pre>
|
|
</li>
|
|
|
|
<li><a name="mv2"> Supposez que vous avez chez vous l'arborescence</a> <a
|
|
href="../mkdir_cd.html#arbo">que voici</a>, et que vous vous trouvez dans
|
|
<code>~/Rapport/docs/</code>.
|
|
|
|
<ul>
|
|
|
|
<li> <strong>Comment faites-vous pour y amener <code>Rapport.tex</code> qui
|
|
se trouve dans le répertoire père ?</strong>
|
|
<pre>
|
|
mv ../Rapport.tex .
|
|
</pre>
|
|
|
|
<p>Amener le fichier <code>Rapport.tex</code> situé dans répertoire père
|
|
(<code>../Rapport.tex</code>) dans le répertoire où on se trouve
|
|
(<code>.</code> : ici).
|
|
</p></li>
|
|
|
|
<li> <strong>Comment faites-vous ensuite pour ramener ce fichier à son
|
|
emplacement d'origine ?</strong>
|
|
|
|
<pre>
|
|
mv Rapport.tex ..
|
|
</pre>
|
|
|
|
|
|
<p>Amener le fichier <code>Rapport.tex</code> situé dans le répertoire courant,
|
|
dans le répertoire père (<code>..</code>).</p></li>
|
|
|
|
</ul>
|
|
</li>
|
|
|
|
<li><a name="mv3"> <strong>Comment renommer un répertoire
|
|
<code>bla/</code> en <code>blo/</code> ? Que se passe-t-il si le
|
|
répertoire <code>blo</code> existe déjà ?</strong> </a>
|
|
|
|
|
|
<p>Il suffit de taper
|
|
</p>
|
|
|
|
<pre>
|
|
mv bla/ blo/
|
|
</pre>
|
|
|
|
<p>
|
|
Si jamais <code>blo/</code> existe déjà, <code>bla/</code> devient un
|
|
sous-répertoire de <code>blo/</code>.
|
|
</p>
|
|
</li>
|
|
|
|
<li><a name="mv4"> <strong>Comment faire pour à la fois déplacer un fichier
|
|
et changer son nom ? Que se passe-t-il si il existe déjà un fichier de
|
|
ce nom dans le répertoire d'arrivée ? </strong></a>
|
|
|
|
<p>
|
|
Supposons que l'on veut amener <code>Rapport.tex</code> dans le répertoire
|
|
courant, et l'appeler <code>stage</code>. On tape :
|
|
</p>
|
|
|
|
<pre>
|
|
mv ../Rapport.tex stage
|
|
</pre>
|
|
|
|
<p>
|
|
<code>Rapport.tex</code> est à la fois déplacé et renommé; vous pouvez
|
|
vérifier qu'il n'est plus dans <code>Rapport</code> et qu'il y a désormais un
|
|
fichier <code>stage</code> dans <code>docs/</code>.
|
|
</p>
|
|
|
|
<p>
|
|
Si le fichier d'arrivée existe déjà, on se retrouve dans le cas vu tout au
|
|
début de cet exercice (remplacement ou non).
|
|
</p>
|
|
</li>
|
|
|
|
|
|
<li><a name="mv5"> <strong>Mêmes questions avec un répertoire</strong> </a>.
|
|
|
|
|
|
<p>Pour déplacer et renommer, la syntaxe est la même que pour un fichier :
|
|
</p>
|
|
|
|
<pre>
|
|
mv ../bla ble/
|
|
</pre>
|
|
|
|
<p class="continue">
|
|
déplace le répertoire <code>bla/</code> du répertoire père dans le répertoire
|
|
courant, et le renomme en <code>ble/</code>. Si jamais <code>ble/</code>
|
|
existe déjà, <code>bla/</code> y est déplacé sous son nom, et devient un
|
|
sous-répertoire de <code>ble/</code>.
|
|
</p>
|
|
</li>
|
|
|
|
|
|
<li><a name="mv6"> <strong> Que se passe-t-il si on lance <code>mv</code>
|
|
avec les options <code>-i</code> et <code>-f</code> ensemble ? </strong>
|
|
</a>.
|
|
|
|
<p>
|
|
L'option <code>-f</code> (<em>force</em>) sert à renommer le fichier
|
|
impérativement, même si le fichier cible existe déjà, sans demander
|
|
confirmation. L'option <code>-i</code> (<em>interactive</em>) demande
|
|
confirmation. Des deux options, c'est <code>-f</code> qui l'emporte :
|
|
</p>
|
|
|
|
<pre>
|
|
<span class="prompt">bireme ~ $</span> ls
|
|
bla tutu Rapport/
|
|
<span class="prompt">bireme ~ $</span> alias mv
|
|
mv='mv -i'
|
|
<span class="prompt">bireme ~ $</span> mv bla tutu
|
|
mv: overwrite tutu (yes/no)? n
|
|
<span class="prompt">bireme ~ $</span> mv -f bla tutu
|
|
<span class="prompt">bireme ~ $</span> ls
|
|
tutu Rapport/
|
|
</pre>
|
|
</li>
|
|
|
|
</ol>
|
|
|
|
<div class="metainformation">
|
|
Auteur : Émilia Robin, Joël Riou. Dernière modification le
|
|
<date value="$Date: 2007-07-13 08:41:41 $"/>.
|
|
</div>
|
|
|
|
</body>
|
|
</html>
|
|
|