mercredi 9 avril 2014

13 - rm : supprimer des fichiers et dossiers

0 commentaires
logo linux


On attaque la commande qui fâche : rm.
Pourquoi est-ce qu'elle fâche ? Parce qu'il n'existe pas de corbeille dans la console de Linux : le fichier est directement supprimé sans possibilité de récupération !

rm : supprimer un fichier

La commande rm (pour ReMove, « supprimer » en anglais) peut supprimer un fichier, plusieurs fichiers, des dossiers, voire même votre ordinateur entier si vous le voulez.
Il faut donc l'utiliser avec précaution. Commençons par des choses simples, supprimons cefichierbidon :
rm fichierbidon

Normalement, on ne vous demande pas de confirmation, on ne vous affiche rien. Le fichier est supprimé sans autre forme d'avertissement. Brutal, hein ?
Vous pouvez aussi supprimer plusieurs fichiers en séparant leurs noms par des espaces :
rm fichierbidon fichiercopie

-i : demander confirmation

La commande -i permet de vous demander une confirmation pour chacun des fichiers :
mateo21@mateo21-desktop:~$ rm -i fichierbidon 
rm: détruire fichier régulier vide `fichierbidon'?

Lorsqu'on vous demande une confirmation de type oui/non comme ici, vous devez répondre par une lettre :
  • o : signifie « Oui ». Sur certains systèmes anglais, il faudra peut-être utiliser y de Yes ;
  • n : signifie « Non ».
Tapez ensuite sur Entrée pour valider.

-f : forcer la suppression, quoi qu'il arrive

-f, c'est un peu le contraire de -i : c'est le mode des gros bourrins.
Ce paramètre force la suppression, ne demande pas de confirmation, même s'il y a un problème potentiel.
En raison des risques que cela comporte, utilisez-le aussi rarement que possible.
rm -f fichierbidon

-v : dis-moi ce que tu fais, petit cachotier

Le paramètre -v (Verbose, verbeux en anglais, c'est-à-dire « parler beaucoup ») est un paramètre que l'on retrouve dans beaucoup de commandes sous Linux. Il permet de demander à la commande de dire ce qu'elle est en train de faire.
Comme vous l'avez vu, par défaut la commande rm est silencieuse. Si vous supprimez de très nombreux fichiers, ça peut prendre du temps. Pour éviter que vous vous impatientiez, pensez à utiliser -v :
mateo21@mateo21-desktop:~$ rm -v fichierbidon fichiercopie 
détruit `fichierbidon'
détruit `fichiercopie'

Vous voyez au fur et à mesure de l'avancement ce qui est en train d'être fait. Très pratique !

-r : supprimer un dossier et son contenu

Le paramètre -r peut être utilisé pour supprimer un dossier (au lieu d'un fichier) ainsi que tout ce qu'il contient : fichiers et dossiers !
C'est un paramètre assez dangereux, faites donc bien attention de l'utiliser sur un dossier dont vous ne voulez vraiment plus, car tout va disparaître à l'intérieur :
rm -r animaux/

… supprime le dossier animaux ainsi que tout ce qu'il contenait (sous-dossiers vertebres et chat).

rm et le joker de la mort (qui tue)

Bon, vous êtes grands, je crois que le moment est venu de vous révéler un terrible secret : les enfants ne naissent pas dans les choux.
Euh pardon, je voulais dire : la commande rm est vraiment dangereuse. Très dangereuse. Vous pouvez potentiellement bousiller tout votre système avec !
NON NON NON NE FAITES JAMAIS CA !!! => rm -rf /*

Je me suis permis de mettre du texte avant pour vous éviter la tentation de recopier bêtement la commande pour « rigoler », pour « voir ce que ça fait ». Je vais vous l'expliquer dans le détail, parce que c'est quand même l'erreur n° 1 à ne pas faire sous Linux.
  • rm : commande la suppression ;
  • -r : supprime de manière récursive tous les fichiers et dossiers ;
  • -f : force la suppression sans demander la moindre confirmation ;
  • /* : supprime tous les fichiers et dossiers qui se trouvent à la racine (/) quel que soit leur nom (joker *).
En clair, cette commande supprime tout votre disque dur depuis la racine, sous-dossiers compris, et ne demande aucune confirmation. Aucune possibilité de récupération, votre PC est foutu. Vous êtes bons pour une réinstallation de Linux, et aussi de Windows si la partition de Windows était accessible depuis Linux.
Mais ils sont bêtes les gens qui ont créé cette commande ! Pourquoi autoriser de faire une chose aussi risquée ?
En fait, il y a plusieurs mécanismes de protection. On en apprendra plus dans le prochain chapitre (qui traitera des utilisateurs et de leurs droits).
Par exemple, les fichiers à la racine ne vous « appartiennent » pas, ils appartiennent au superutilisateur « root ». Moi je me suis loggé en tant que mateo21, je n'ai donc théoriquement pas le droit de supprimer ces fichiers. La suppression sera refusée.
Seulement, pour peu que vous soyez loggés en tant que « root » (on verra comment le faire dans le chapitre suivant), vous aurez le droit de le faire, et là plus rien ne vous arrêtera !
On apprendra plus tard comment utiliser les alias de commande pour éviter qu'une commande aussi dangereuse ne s'exécute. En attendant, ne jouez pas avec le feu, car vous y perdriez les mains, les pieds, la tête et tout ce qui va avec.
Le joker reste quand même très utile, mais lorsque vous l'utilisez avec rm, triplez d'attention.
Par exemple :
rm -rf *

… supprime tous les fichiers et sous-dossiers du dossier dans lequel je me trouve. Il m'arrive de l'utiliser, d'en avoir besoin, mais à chaque fois je fais très très attention à ce qu'il n'y ait plus rien dans ce dossier (et dans les sous-dossiers) qui m'intéresse.
Comme vous pouvez le voir, il n'y a qu'un seul caractère de différence (le /) avec la commande de la mort que je vous ai montrée un peu plus haut.
Une erreur est vite arrivée. J'ignore combien de gens se sont pendus après avoir exécuté cette commande, mais ça méritait au moins un GROS avertissement !

Leave a Reply