Corrigé des exercices sur cp et mv

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 less, 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.

cp

  1. 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 ?

    Oui, c'est à cela que sert l'option -r (recursive). Supposons, suivant l'arborescence d'exemple, que vous voulez copier le répertoire Rapport et ses sous-répertoires dans le répertoire www. Il faut taper :

    cp -r Rapport/ www/
    

    ou

    cp -R Rapport/ www/
    
  2. Que se passe-t-il si l'on veut faire une copie appelée tentative/ de son répertoire essai/, et que le répertoire tentative/ existe déjà ?

    Quand on indique le nom d'un répertoire qui n'existe pas, cp considère qu'il s'agit du nom à donner à la copie du premier répertoire (ou fichier). Quand le répertoire existe déjà, cp considère qu'il s'agit de l'endroit où il faut placer la copie du premier élément (la «cible» : target).

    Si donc on tape

    cp -R essai/ tentative/
    

    et que tentative/ existe déjà, on obtient une copie de essai/, également appelée essai/, placée dans le répertoire tentative/.

  3. 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 ?

    Le programme demande si vous voulez vraiment effacer le fichier déjà existant pour le remplacer par celui dont vous faites la copie.

    &icone.attention; Attention &icone.attention;

    Il en est ainsi parce que vous avez un alias de cp sur cp -i, qui demande confirmation. Ce n'est pas nécessairement le cas partout.

    &icone.note;Pour savoir quels sont vos alias, tapez «alias» ou allez voir dans votre fichier .alias. Avec la config conscrits, les alias sont dans le .zshrc (le fichier de configuration du shell zsh).

  4. Quel est l'effet d'une ligne comme :
    cp fichier1 fichier2 fichier3 repertoire/
    

    Les fichiers fichier1, fichier2 et fichier3 sont copiés sous leur nom dans le répertoire répertoire/, qui doit exister.

mv

  1. Que se passe-t-il si le fichier «cible» existe déjà ?

    Si vous avez un alias de mv sur mv -i (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 :

    bireme ~ $ ls
    rapport.tex     notes     complements
    bireme ~ $mv notes complements
    mv: overwrite complements (yes/no)? y
    bireme ~ $ls
    rapport.tex     complements
    
  2. Supposez que vous avez chez vous l'arborescence que voici, et que vous vous trouvez dans ~/Rapport/docs/.
  3. Comment renommer un répertoire bla/ en blo/ ? Que se passe-t-il si le répertoire blo existe déjà ?

    Il suffit de taper

    mv bla/ blo/
    

    Si jamais blo/ existe déjà, bla/ devient un sous-répertoire de blo/.

  4. 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 ?

    Supposons que l'on veut amener Rapport.tex dans le répertoire courant, et l'appeler stage. On tape :

    mv ../Rapport.tex stage
    

    Rapport.tex est à la fois déplacé et renommé; vous pouvez vérifier qu'il n'est plus dans Rapport et qu'il y a désormais un fichier stage dans docs/.

    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).

  5. Mêmes questions avec un répertoire .

    Pour déplacer et renommer, la syntaxe est la même que pour un fichier :

    mv ../bla ble/
    

    déplace le répertoire bla/ du répertoire père dans le répertoire courant, et le renomme en ble/. Si jamais ble/ existe déjà, bla/ y est déplacé sous son nom, et devient un sous-répertoire de ble/.

  6. Que se passe-t-il si on lance mv avec les options -i et -f ensemble ? .

    L'option -f (force) sert à renommer le fichier impérativement, même si le fichier cible existe déjà, sans demander confirmation. L'option -i (interactive) demande confirmation. Des deux options, c'est -f qui l'emporte :

    bireme ~ $ ls
    bla	tutu	Rapport/
    bireme ~ $ alias mv
    mv='mv -i'
    bireme ~ $ mv bla tutu
    mv: overwrite tutu (yes/no)? n
    bireme ~ $ mv -f bla tutu
    bireme ~ $ ls
    tutu    Rapport/
    
Auteur : Émilia Robin, Joël Riou.