Bienvenue sur PEBKAC.fr, le site qui recense les anecdotes où l’on se moque des utilisateurs ne maîtrisant pas l’outil informatique. PEBKAC est un acronyme signifiant « Problem Exists Between Keyboard And Chair ».
Le problème se situe entre la chaise et le clavier : soumettez vos histoires, donnez votre avis !
Ce site n'est pas le site original pebkac.fr. Je publie ici la liste des PEBKAC que j'ai pu sauvegarder avant que le site original ne soit mis hors ligne.
Mon cousin a sollicité mon aide, pour comprendre ce qui était passé avec le script de sauvegarde en bash qu'il avait écrit lui-même. En effet, lorsqu'il l'a fait tourner pour la première fois, il a perdu tout le contenu de son disque dur. Heureusement, dans son malheur, il avait une copie du script sur clé USB. Ceci m'a permis de voir ce qu'il avait écrit.

Il avait créé plusieurs répertoires différents (« lundi », « mardi », etc.) et une variable $BACKUPDIR reprenant le répertoire à utiliser en fonction du jour.

Le script, qu'il a exécuté sous root, commence par effacer le répertoire de destination pour faire le ménage : rm -rf $BAKUPDIR/.
La faute de frappe qui retourne une chaîne vide, ça peut faire très mal, en effet. PEBKAC.
PEBKAC #9019 proposé par /etc/passwd le 30/11/2013 | 16 commentaires | 👍🏽 👎🏽 +394
Ne jamais tester « en prod' », même si c'est personnel.
Commentaire #120533 écrit par Ishido le 30/11/2013 à 12h55 | 👍🏽 👎🏽
Apprendre par l'erreur.
Commentaire #120538 écrit par Aaargh!!! le 30/11/2013 à 13h12 | 👍🏽 👎🏽
Avec un rm -rf, je mets toujours un -i pour le test. Je pense que ça m'a été utile qu'une seule fois, mais ça le vaut !
Commentaire #120539 écrit par Paulli le 30/11/2013 à 13h13 | 👍🏽 👎🏽
Le mieux reste malgré tout d'éviter sans test préalable, comme le dit Ishido, car si une fois, comme ça, sans faire gaffe, tu oubliais la condition de test...
Commentaire #120550 écrit par Aaargh!!! le 30/11/2013 à 13h22 | 👍🏽 👎🏽
C'est pas plutôt rm -rf /* qu'il fallait faire ?
Ou alors ça dépend des OS
Commentaire #120558 écrit par Kaoru le 30/11/2013 à 13h52 | 👍🏽 👎🏽
du coup c'est rm -ri vu que -f et -i sont contraires ;)
sinon dans mon .*shrc j'ai mis :
alias mv='mv -i'
 alias cp='cp -i'
 alias rm='rm -i'

ça marche aussi
Commentaire #120559 écrit par Alfred456654 le 30/11/2013 à 13h54 | 👍🏽 👎🏽
en fait, il voulait aller supprimer le contenu d'un répertoire dont le nom est dans la variable BACKUPDIR, mais en tapant il a raté le 'C' et a donc exécuté la commande rm -rf $BAKUPDIR/, et comme la variable BAKUPDIR ne contient rien, le shell exécute rm -rf /.
à noter également que rm -rf /* et rm -rf / ont le même effet.
Commentaire #120560 écrit par Alfred456654 le 30/11/2013 à 13h56 | 👍🏽 👎🏽
Non, par défaut, rm -rf / ne fait rien.

Extrait de la page de man :
--preserve-root
        do not remove '/' (default)
Commentaire #120564 écrit par Acné le 30/11/2013 à 14h07 | 👍🏽 👎🏽
C'est ce que je pensais :)
Commentaire #120565 écrit par Kaoru le 30/11/2013 à 14h18 | 👍🏽 👎🏽
On peut aussi faire rm -rf ./$ma-variable/
Commentaire #120579 écrit par Altan le 30/11/2013 à 15h21 | 👍🏽 👎🏽
De toute façon, ça lui apprendra à :
- soit d'abord se déplacer dans le bon répertoire, (avec vérification de bien y être...)
- soit mettre une condition d'existence du répertoire,
- soit n'effacer QUE les fichiers.

Curieusement, j'ai fait plein de bêtise sous linux, mais jamais eut besoin de faire un RM à la racine...

Le plus souvent, pour faire une sauvegarde, le mieux reste d'utiliser TAR, nan ? ;)
Commentaire #120619 écrit par ben_kenobi le 01/12/2013 à 01h10 | 👍🏽 👎🏽
Moi aussi, mais je ne suis pas sûr que ça a été toujours le cas.
Commentaire #120629 écrit par val070 le 01/12/2013 à 11h15 | 👍🏽 👎🏽
Lʼanecdote date dʼil y a un paquet dʼannées (2004 ou 2005) et sa distribution était une Red Hat (pas Fedora, vraiment Red Hat). Vérification faite, cette protection dans la commande rm a été généralisée seulement plus tard (GNU coreutils à partir de la version 6.4).
Commentaire #120630 écrit par /etc/passwd le 01/12/2013 à 11h18 | 👍🏽 👎🏽
Pour ça, il y a `set -u` au début du script.

http://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html
Commentaire #120635 écrit par Orion le 01/12/2013 à 12h12 | 👍🏽 👎🏽
ce n'est pas forcément un besoin, à voir #7892
Commentaire #120638 écrit par ygnobl le 01/12/2013 à 14h38 | 👍🏽 👎🏽
effectivement, la commande "Set" semble disposer de bien bonnes fonctions :)
Commentaire #120730 écrit par ben_kenobi le 02/12/2013 à 19h59 | 👍🏽 👎🏽