Rigolons un peu du « rm -rf / »…

… Jusqu’à ce que cela nous arrive 😀

On rigole beaucoup de cette fameuse ligne de commande shell qui, en toute innocence, supprimera récursivement tous les fichiers et dossier à partir du root…

Cette bêtise n’est pas réservée à Linux et j’ai failli expérimenter la même chose aujourd’hui en PowerShell. C’est un excellent cas pratique pour montrer comment éviter ça.

Suppression récursive en PowerShell

L’équivalent littéral en PowerShell serait le suivant :

N’exécutez pas cette ligne. Sans le moindre avertissement, PowerShell tentera de supprimer sans prévenir, et récursivement, tous les fichiers contenus à la racine de la partition sur laquelle on a exécuté la commande.

S’en prémunir

PowerShell possède deux mécanismes de protection pour cette commande, mais également pour beaucoup d’autres. Ce sont des paramètres à ajouter après l’appel du cmdlet que l’on utilise :

  • -Confirm : PowerShell demander une confirmation avant d’exécuter le cmdlet
  • -WhatIf : PowerShell simulera une exécution et décrira le résultat

Pour voir l’intégralité des paramètres ainsi que des exemples pour les différents cmdlet qui existent :

L’anecdote

J’aime les fonctions pour me faciliter la vie et rendre le code plus clair. Une de ces fonctions me servait à ajouter un « \ » à la fin d’un chemin donné en paramètre… Chemin qui était utilisé, par la suite, comme base de suppression récursive de fichiers et de dossier.

Sauf que je ne vérifiais pas que le chemin reçu pouvait être vide. Ce qui, en théorie, ne devrait pas arriver mais il ne faut jamais oublier que si ça peut arriver, ça arrivera.

Heureusement que par simple paranoïa j’avais ajouté le flag -WhatIf ; j’aurais été bien embêté à la fin de l’exécution du script…


Related Posts Plugin

Lyyn~

Lyyn~

L'informatique est un monde magique et complexe, partager quelques connaissances et astuces au travers de ce blog me permet de participer à la construction d'un web meilleur pour tous !